logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

[Midnight] 미드나잇과 카르다노 아키텍처 관계 분석

[Midnight] 미드나잇과 카르다노 아키텍처 관계 분석
BlockchainMidnightCardano
성훈 김
2026년 8월 23일
목차
 

개요

이번에 아이덴티티 Web3모임에서 미드나잇 세션에 발표할 수 있는 기회가 생겼었어요.
 
notion image
 
발표에서 나누었던 내용을 블로그로 다시 정리하면서 공유하려고 해요 🙂
 

미드나잇에 흥미를 가지게 된 이유

사실 카르다노는 제가 코로나 불장 때부터 많은 관심을 가지고 찰스 호스킨슨 AMA도 자주듣고, 지금은 운영하지는 않지만 Stake Pool도 운영 해보았었는데요. 당시 저의 욕심으로 인해 선물 트레이딩에 손대지만 않았으면 많은 양을 보유했을 텐데, 현재는 아주 소량의 ADA를 보유하고 있습니다. ㅎ
 
카르다노는 현재 모든 블록 생산을 커뮤니티 SPO가 담당하고 있는데요. 개인적으로는 탈중앙화를 위한 첫번째 걸음이 블록생산을 전세계 흩어진 커뮤니티가 담당하는 것이 출발점이라고 생각하는데, 그런 의미에서 카르다노는 탈중앙화의 첫 단추를 잘 끼웠다고 생각해요.
 
 
그래서 미드나잇을 들었을 때, 카르다노 파트너 체인으로 해당 인프라를 공유하고 그리고 ZK서비스를 제공하며, Typescript와 비슷한 Compact를 사용하고 있다는 것에 흥미를 가지게 되었어요. (사실 배울 것도 많은데, Haskell까지 배우기가 저에겐 장벽이였어요. ㅠ)
 
그럼 본격적으로 미드나잇에 대해서 이야기를 나누어볼게요.
 

미드나잇은 카르다노의 L2체인인가?

미드나잇과 카르다노는 도대체 어떤 관계 일까요? 카르다노 위에서 돌아가는 L2체인이라고 봐야할까요?
 
일반적으로 L1체인은 보안과 동기화 때문에 노드가 검증하는 데 많은 시간이 걸려요. 따라서 블록 확정 속도가 느리고 가스비 또한 저렴하지 않습니다. 이를 해결하기 위해서 L2레이어가 등장했죠. L2는 롤업이라는 기술로 많은 트랜잭션을 빠르게 확정하고, 확정된 트랜잭션을 묶어서 L1에 제출하게 되는데, 이렇게 속도를 높이고 가스비를 줄이는 대안이 될 수 있었죠.
 
notion image
 
그래서 통상적으로 롤업 L2는 L1과 아래표처럼 상호 작용을 이루고 있습니다.
 
롤업 L2
미드나잇
L1에 state root 제출
O
X
L1이 유효성 검증
O
X
L1 데이터로 체인 재구성 가능
O
X
 
쉽게 말해서, L2가 L1에게 “내 계산이 맞는지 확인 해줘”라고 요청한다면, 미드나잇은 카르다노에 그런 요청을 하지 않아요. 미드나잇은 자신의 상태를 올리지도, 검증을 받지도 않아요.
 
그래서, 미드나잇은 카르다노의 L2가 아닙니다. L2가 아니라면 왜 굳이 파트너 체인이라고 부르는 것 일까요?
 
notion image
 
카르다노에서 파트너 체인을 이렇게 정의하고 있어요. "카르다노와 병렬로 실행되면서, 카르다노의 보안을 활용하며 독자적인 기능을 구현하는 블록체인"
 

카르다노의 보안이란?

그럼 카르다노의 보안이란 무엇일까요? 공식 문서에서는 카르다노의 보안을 이렇게 말하고 있네요.
 
notion image
 
카르다노에는 카르다노 네트워크의 보안을 지켜온 검증된 이력(proven history)을 가진 탄탄한 SPO 네트워크가 있다.
 

SPO 네트워크란?

SPO는 Stake Pool Operator의 약자로서 블록을 만드는 풀 운영자입니다. 업비트에 로그인해보시면 업비트 역시 SPO로서 스테이킹 서비스를 제공하고 있죠. 업비트에서 우리가 에이다를 스테이킹하면 우리는 위임자가 되고, 업비트는 위임자의 지분으로 풀 운영을 할 수 있습니다. 즉 위임량의 크기에 따라 블록을 생성할 수 있는 확률을 높일 수 있어요.
 
notion image
 
업비트는 어떻게 보면 기업화된 SPO이지만 하나의 풀에는 보상상한이 있기 때문에, 풀이 가득차면 위임자들의 보상은 자연스레 줄어듭니다. 그리고 카르다노에서는 락업이란 개념이 없기 때문에, 위임자들은 자연스레 다른 풀로 위임을 손쉽게 변경할 수 있고, 그렇게 지분은 분산 되어져요.
 
그리고 최근 카르다노 Metric을 살펴보면 전세계에 흩어져있는 SPO는 2680개이고, 여기에 위임한 지갑의 수는 134만개 정도입니다.
 
notion image
 
이 데이터가 왜 안전지표가 될 수 있을까요?
 

블록체인이 “안전하다”라는 것,

학술적으로 블록체인이 “안전하다”라는 것은 결국 두 약속이 지켜진다는 뜻입니다. 한 번 확정된 거래는 뒤집히지 않는 다는 것, 그리고 정직한 사용자의 유효한 거래는 반드시 원장에 포함이 되어야 한다는 것 (Persistence & Liveness).
 
notion image
 
카르다노의 합의 프로토콜 Ouroboros는 이 “블록을 만드는 지분의 과반이 정직하게 행동하는 한”, 이 두 약속이 지켜진다고 수학적으로 보장합니다.
 
그래서 질문이 바뀝니다. 카르다노의 보안이란 “정직한 과반을 어떻게 유지할 것인가?” 이고, 그 과반을 이루는 게 SPO들입니다. 그리고 SPO는 블록을 만드는 사람이죠. 따라서 이들이 정직하게 블록을 생산할 수 있는 구조가 필요하고, 이는 공격자 입장에서 비용이 됩니다. 그리고 그 비용이 클수록 안전해 집니다.
 

SPO네트워크가 정직한 과반을 유지하는 방식

notion image
 
  1. 개인 풀 운영자로 활동하기 쉬운 구조
    1. 카르다노는 블록을 만드는 풀이 수천 개이고, 대부분 개인이나 소규모 팀이 세계 각지에서 운영합니다. 그래서 공격자가 이들을 담합하기가 매우 어렵죠. 상대적으로 비트코인은 블록 생산이 기업화 되었고, 이더리움 역시 거래소 스테이킹으로 지분이 쏠리고 있는 것에 비하면, 카르다노는 일반 서버로 누구나 풀을 열 수 있어 상대적으로 쉽게 이 분포가 유지됩니다.
  1. 위임자가 감시 역할을 합니다.
    1. SPO 수입은 위임자에서 나오고, 위임에는 락업이 없습니다. 운영자가 이상 행동을 하면 위임자는 다른 풀로 자연스레 떠나게 되죠. 그럼 그 풀의 블록 생산 확률이 떨어집니다. 앞서 말한 “스테이킹 주권”이 여기서 보안 장치로 작동하게 되는 것이죠. — 돈을 주는 쪽이 곧 감시하는 쪽인 것이죠.
  1. SPO 평판 구조
    1. 2020년 셀리 하드포크 이후 자기 이름과 평판을 걸고 24/7 노드를 돌려온 운영자들입니다. 이 평판 자체가 수입이라, 하루 아침에 버리기 어렵죠.
 
이 세 가지가 겹쳐서 “정직한 과반이 깨지지 않는 구조”를 만든 것, 그게 카르다노의 보안이죠. Ouroboros 증명 프로토콜은 “정직한 과반이 있다면”이라는 조건으로 시작하는데, 그 조건을 실제로 채우고 있는 게 바로 이 SPO네트워크인 것이죠.
 
물론 처음엔 세계 각지에 있는 개인들을 참여시키는 것이 매우 어렵기 때문에 초기엔 카르다노의 재단 노드가 모든 블록을 만들었었습니다. 그리고 그 비율을 나타내는 것이 D파라메터 고 불립니다.
 
notion image
 
d=1이면 재단이 전부 블록 생산을 하는 것이고, d=0 이면 커뮤니티들이 생산하는 것이에요. 카르다노는 이 값을 점진적으로 낮춰서 2021년 3월 d=0에 도달 했습니다. 그래서 저는 카르다노가 탈중앙을 위한 첫 단추를 잘 끼웠다고 생각합니다.
 
그렇다면 미드나잇은 이 SPO네트워크를 어떻게 사용하는 것일까요?
 

미드나잇은 카르다노 보안을 어떻게 활용하는 가?

일단 결론 부터 말씀 드리자면, 미드나잇은 이 SPO네트워크를 빌려옵니다. 카르다노가 파트너 체인을 위해서 만든 Tool-kit을 보면 그 구조를 확인할 수 있습니다.
 
notion image
 
이 표는 카르다노 문서에서 파트너 체인을 운영할 때 필요한 구조를 약식으로 보여준 구조입니다. 카르다노는 SPO는 그림에서 cardano node를 운영하면 되구요. 만약 미드나잇 SPO를 운영한다면 거기에 추가해서 다음과 같은 인프라를 구축해야해요.
 

미드나잇 인프라

미드나잇 노드는 블록을 만들기 전에 카르다노에게 물어봐야 합니다. “지금 누가 SPO를 등록했고, 그 풀에 위임된 ADA가 얼마냐?”라고 물어봐야 해요. 그래서 카르다노 노드를 읽는 인프라를 구성해야 됩니다. 도서관에 비유하면 다음과 같아요.
 
notion image
 
  • 카르다노 노드
    • DB-sync
      • PostgresSQL