Cosmos[1] (Concept, Architecture)

storemymem·2022년 4월 27일
0

Concept

  • Cosmos는 여러 블록체인 간의 연결을 가장 큰 목표로 설계됨. 체인 상호간에 연결이 스무스 하다면 sidechain 형식으로 scalability 확보 뿐만 아니라 atomic swap도 편하게 구현되지 않을까,, 하지만 아직 atomic swap이나 2 way peg의 경우 구현에 어려움이 있어보임.
  • 구성요소
    • Chain들이 상호 병행 실행(Run concurrently)
    • Hub & Zone
      • Hub : 여러 블록체인을 연결/관리하는 블록체인, 전체 cosmos 시스템의 중앙 컨트롤 타워 역할
      • Zone : Hub와 통신하는 다른 여러 독립 blockchain
    • IBC(Inter-Blockchain Comm.)
      • IBC는 통신 프로토콜의 일종, Hub와 Zone 간의 통신을 IBC 패킷을 통해 지원
      • Zone A의 블록체인이 보유한 token이 Hub를 지나 Zone B로 토큰을 전송 시에 IBC를 통해 communication하며 Zone 간의 토큰 교환

Governance

  • 코스모스 허브의 validator와 delegator는 정책(policy)을 위한 코드가 아닌 일반 human readable한 언어로 된 규칙을 표결에 부쳐 수정할 뿐 아니라 블록 gas limit 같은 시스템에 사전 설정된 제한/규약들을 업그레이드를 통해 자동으로 변경하는 proposal도 진행 가능
  • Proposal 투표 옵션
    • Yay(찬성)
    • YayWithForce(강력히찬성)
    • Nay(반대)
    • NayWithForce(강력히반대)
    • Abstain(기권)
  • Proposal 통과 여부를 결정할 때는 과반수의 투표가 요구되지만, 1/3 이상이 강력히 반대투표(NayWithForce)할 때는 과반수의 결정을 거부 가능.
    • 이때 모두가 거부에 대한 패널티를 통해 fee를 몰수 당하고 과반수 결정을 거부한 validator들은 자신의 atom 중 일정부분을 추가로 상실

Mempool

  • Memory pool
  • 다른 노드들로 broadcast되며, 블록으로 포함 시 consensus reactor로 제공될 트랜잭션들의 memory pool
  • Mempool state
    • External : get, check, broadcast new transactions
    • internal : return valid transaction, update list after block commit
    • External Functionality
      • 비신뢰되는 actor들에게 network interface로 노출 되는 기능
      • CheckTx : RPC/P2P를 통해 트리거
      • Braodcast : 성공적인 Check 후 gossip되는 메시지
    • Internal functionality
      • Tendermint binary 내에 컴파일된 코드들(method)로 노출되는 기능
      • ReapMaxBytesMaxGas : 다음 블록 내에 제안되기 위한 Tx들을 get. Tx의 사이즈를 MaxBytes보다, Gas를 MaxGas보다 작게 보장함
      • Update : 지난 블록에 포함되어 있는 Tx를 mempool에서 제거
      • ABCI.CheckTx : Tx를 검증하기 위해 ABCI app을 호출
  • Mempool을 운영하기 위한 optimizations
    • Optimizations 라이브러리는 tx cache에서 수행됨
    • Tx가 이전에 이미 보였다면(has been seen) signature를 다시 검증 하지 않음
      • 미검증된 트랜잭션이 추후에 valid(good)될 수 있으니 tx cache에 검증된 Tx만을 저장하지는 않음
    • 블록에 포함되었던 Tx들이 cache에서 지워지지 않는다면 해당 Tx들은 여전히 다른 P2P network로 전달됨
  • Configuration
    • maxMsgSize : 부정확한 encoded 데이터나 maxMsgSize를 넘는 data가 전송된다면 peer에서 stop 결과가 나옴
      • maxMsgSize = MaxBatchBytes(10MB) + 4 (proto overhead)
    • maxBatchBytes : Reactor는 연결된 피어에게 일괄 처리로 트랜잭션을 보내는데, 한 배치의 최대 크기를 설정함
    • Mempool은 Tx를 수신한 피어에게 다시 Tx를 보내지 않음
    • Configuration link

참고
https://docs.cosmos.network/main/

profile
ConsensusMyMemoies

0개의 댓글