Cosmos [1] (Concept, Architecture)
2023. 6. 13. 21:49ㆍBlockchain/Cosmos
728x90
반응형
※ 원글 작성 : 22년 4월 27일
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
- maxMsgSize : 부정확한 encoded 데이터나 maxMsgSize를 넘는 data가 전송된다면 peer에서 stop 결과가 나옴
728x90
반응형
'Blockchain > Cosmos' 카테고리의 다른 글
Cosmos chain module 및 components (0) | 2023.06.14 |
---|---|
Cosmos SDK 기반 체인 configuration (1) | 2023.06.14 |
Cosmos SDK 기반 체인 로컬 테스트넷 구성 (0) | 2023.06.14 |
Cosmos [3] (Core, SDK, Smart contract) (1) | 2023.06.13 |
Cosmos [2] (Algorithm, Protocol) (0) | 2023.06.13 |