Workspace IndexAlgorithms › Day 63

Classifying Cross-Chain Trust Assumptions — Bridges vs. Intents vs. Light Clients TODO

Algorithms · Day 63 / 100 · D. Distributed Systems & Consensus (Day 52-68)

Concept

Cross-chain systems can be classified by what they rely on to believe a fact happened on another chain. Externally-verified bridges depend on the testimony of a multisig or a separate validator set, so their trust basis is that set's honesty and key management — which is exactly why they've been the favorite target of large-scale hacks. Light-client approaches verify the counterparty chain's consensus rules directly, requiring no additional trust beyond that chain's own consensus safety, but they carry high implementation complexity and on-chain verification cost, which is why ZK proofs are increasingly used to cut that cost. Intent/solver-based designs have users declare only the outcome they want; a solver fronts the funds from its own capital and recovers them later during settlement, so the trust assumption shifts from the authenticity of message-passing to the solver's collateral and the settlement/dispute process. The constant yardstick across all three is: who can lie, what do they lose if they do, and does a dispute window and recovery path actually exist?

The real risk in connecting assets or data across chains rarely comes from a code bug — it comes from who this bridge ultimately asks you to trust, and that trust assumption sets the worst-case loss bound for the whole service.

Code & Formula

# 크로스체인 신뢰 가정 분류 — 브릿지 vs 라이트클라이언트 vs 인텐트/솔버, 정족수 비율과 최악 손실로 비교한다.
# 각 방식이 "누구를 얼마나 믿어야 자금이 안전한가"를 정족수 비율과 최악 손실액으로 계량화한다.

bridges = [
    {"name": "외부 검증형 멀티시그 브릿지", "type": "external", "n": 9, "threshold": 5, "tvl": 10_000_000},
    {"name": "라이트클라이언트 브릿지", "type": "lightclient", "n": 100, "threshold": 67, "tvl": 10_000_000},
    {"name": "인텐트/솔버 브릿지", "type": "intent", "solver_collateral": 500_000, "tvl": 10_000_000},
]

def worst_case_loss(b):
    if b["type"] in ("external", "lightclient"):
        quorum_fraction = b["threshold"] / b["n"]
        return b["tvl"], quorum_fraction   # 정족수 이상이 담합하면 TVL 전액이 위험
    if b["type"] == "intent":
        return min(b["solver_collateral"], b["tvl"]), None  # 손실은 솔버 담보로 상한이 걸린다
    raise ValueError("unknown bridge type")

for b in bridges:
    loss, quorum_fraction = worst_case_loss(b)
    if quorum_fraction is not None:
        print(f"{b['name']}: 담합 필요 비율 {quorum_fraction:.0%}, 최악 손실 ${loss:,}")
    else:
        print(f"{b['name']}: 담합 비율 N/A(솔버 단독 위험), 최악 손실 ${loss:,} (담보 상한)")

# 라이트클라이언트는 담합 비율이 호스트 체인 자체의 BFT 안전 가정(2/3)과 같아 "추가 신뢰가 없다" —
# 반면 외부 멀티시그는 별도의 작은 검증자 집합을 새로 신뢰해야 한다
print("\n추가 신뢰 요구 여부:")
for b in bridges:
    extra_trust = "없음(호스트 체인 신뢰만 재사용)" if b["type"] == "lightclient" else "있음(별도 주체 신뢰 필요)"
    print(f"  {b['name']}: {extra_trust}")

Exercise

Pick three real bridges or messaging protocols and compare them side by side in a table: who verifies, how funds are custodied, the worst-case loss bound, and the dispute window.

Practical Connection

The moment Verex accepts another chain's collateral or an external event's outcome as settlement input, market settlement's safety can never rise above the trust assumption of that input path — settlement is only ever as safe as its weakest input.

If you study this on a given day, add a note link and a ✅ to this line in the source curriculum (docs/knowledge/dev-100-curriculum.md) and this spot will lead straight to the note body. You can also write directly on this page — but regenerating overwrites it, so it's safer to keep anything you want to save as markdown under docs/algorithms/.


한국어

크로스체인 신뢰 가정 분류 TODO

Algorithms · Day 63 / 100 · D. 분산시스템·합의 (Day 52–68)

브릿지 vs 인텐트 vs 라이트클라이언트

개념

크로스체인 시스템은 상대 체인에서 일어난 사실을 무엇을 근거로 믿는지에 따라 분류된다. 외부 검증형 브릿지는 멀티시그나 별도 검증자 집합의 증언에 의존하므로 신뢰 근거가 그 집합의 정직성과 키 관리에 있고, 그래서 대형 탈취 사고의 단골 표적이 되어 왔다. 라이트클라이언트 방식은 상대 체인의 합의 규칙을 직접 검증해 상대 체인의 합의 안전성 외에 추가 신뢰를 요구하지 않지만, 구현 복잡도와 온체인 검증 비용이 크고 이를 줄이기 위해 ZK 증명을 쓰는 방향이 활발하다. 인텐트·솔버 기반은 사용자가 원하는 결과만 선언하고 솔버가 자기 자금으로 먼저 채워 준 뒤 나중에 정산에서 회수하는 구조라, 신뢰 가정이 메시지 전달의 진위에서 솔버의 담보와 정산·분쟁 절차로 옮겨간다. 비교의 기준은 언제나 누가 거짓말할 수 있고, 거짓말하면 무엇을 잃으며, 이의 제기 기간과 복구 경로가 존재하는가다.

체인 간 자산이나 데이터를 붙일 때 실제 위험은 코드 버그보다 이 다리가 결국 누구를 믿는 구조인가에서 나오고, 그 신뢰 가정이 서비스 전체의 최악 손실 범위를 정하기 때문이다.

코드 · 수식

# 크로스체인 신뢰 가정 분류 — 브릿지 vs 라이트클라이언트 vs 인텐트/솔버, 정족수 비율과 최악 손실로 비교한다.
# 각 방식이 "누구를 얼마나 믿어야 자금이 안전한가"를 정족수 비율과 최악 손실액으로 계량화한다.

bridges = [
    {"name": "외부 검증형 멀티시그 브릿지", "type": "external", "n": 9, "threshold": 5, "tvl": 10_000_000},
    {"name": "라이트클라이언트 브릿지", "type": "lightclient", "n": 100, "threshold": 67, "tvl": 10_000_000},
    {"name": "인텐트/솔버 브릿지", "type": "intent", "solver_collateral": 500_000, "tvl": 10_000_000},
]

def worst_case_loss(b):
    if b["type"] in ("external", "lightclient"):
        quorum_fraction = b["threshold"] / b["n"]
        return b["tvl"], quorum_fraction   # 정족수 이상이 담합하면 TVL 전액이 위험
    if b["type"] == "intent":
        return min(b["solver_collateral"], b["tvl"]), None  # 손실은 솔버 담보로 상한이 걸린다
    raise ValueError("unknown bridge type")

for b in bridges:
    loss, quorum_fraction = worst_case_loss(b)
    if quorum_fraction is not None:
        print(f"{b['name']}: 담합 필요 비율 {quorum_fraction:.0%}, 최악 손실 ${loss:,}")
    else:
        print(f"{b['name']}: 담합 비율 N/A(솔버 단독 위험), 최악 손실 ${loss:,} (담보 상한)")

# 라이트클라이언트는 담합 비율이 호스트 체인 자체의 BFT 안전 가정(2/3)과 같아 "추가 신뢰가 없다" —
# 반면 외부 멀티시그는 별도의 작은 검증자 집합을 새로 신뢰해야 한다
print("\n추가 신뢰 요구 여부:")
for b in bridges:
    extra_trust = "없음(호스트 체인 신뢰만 재사용)" if b["type"] == "lightclient" else "있음(별도 주체 신뢰 필요)"
    print(f"  {b['name']}: {extra_trust}")

연습

실제 브릿지 또는 메시징 프로토콜 세 개를 골라 검증 주체, 자금 보관 방식, 최악의 경우 손실 범위, 이의 제기 기간을 하나의 표로 정리해 비교하기.

실무 · Verex 연결

Verex가 다른 체인의 담보나 외부 이벤트 결과를 정산 입력으로 받아들이는 순간 시장 정산의 안전성은 그 입력 경로의 신뢰 가정 이상으로 올라갈 수 없다 — 정산은 가장 약한 입력만큼만 안전하다.

공부한 날 원본 커리큘럼(docs/knowledge/dev-100-curriculum.md)의 이 줄에 노트 링크와 ✅ 를 붙이면, 이 자리는 노트 본문으로 바로 이어집니다. 노트 없이 이 페이지에 바로 적어도 됩니다 — 다만 다시 생성하면 덮어쓰이므로, 남길 글은 docs/algorithms/ 의 마크다운으로 쓰는 편이 안전합니다.

← 62. 라이트 클라이언트와 상태 없는(stateless) 검증64. 시퀀서 분산화와 강제 포함(force inclusion) →