2023. 6. 15. 10:49ㆍBlockchain/Base
※ 원글 작성 : 23년 5월 15일
Anchoring
블록체인 분야에서의 앵커링은 Private chain의 정보(e.g. 블록 헤더 정보)를 주기적으로 public chain에 기록하는 행위를 뜻한다. Public chain 보다 비교적 보안성이 낮은 private chain이기 때문에 private에서 생성된 정보가 변조될 시 data integrity를 보장하기 위해 사용하는 기법이다. Public/private chain 개념이 등장한 시점부터 언급되던 개념이라 구글 검색을 해보면 대부분 2010년 대에 언급이 되어있고 2020년으로 들어서면서는 잘 보이지 않게 된 개념이다. 하지만 클레이튼 서비스 체인도 데이터 앵커링을 지원하고 여러 프로젝트에서도 아직 사용되는 기술이라 체인 보안 강화에 집중하고 있는 프로젝트들은 프로젝트 성격에 맞는지 확인하고 접목시켜 볼만한 기술이다.
Why anchoring?
왜 앵커링을 사용할까? 위에서 언급했듯이 비교적 보안성이 낮은 chain들이 보안성이 높은 이더리움 등의 메인체인의 보안력(?)을 끌어다 쓰기 위함이다. 간단하게 DPoS의 경우를 예시로 들어본다. 100대의 validator node를 운영 중인 체인 A와 4대의 validator node를 운영 중인 체인 B가 있을 때 체인 A는 최소 50대의 node를 탈취 해야 블록을 마음대로 변조하고, 기록할 수 있는 반면에 B는 2대만 탈취해도 가능하다. 어떤것이 어려울 지에 대한 판단을 내리는 것은 쉬울 것이다. 그렇다면 앵커링읉 통해 B가 생성한 블록 정보를 A에 저장하여서, A에서 B에 대한 블록 정보를 확인할 수 있다면? 블록 B operator들은 변조된 사실을 A에 기록된 이전 블록의 정보를 보고 확인하여 revert 혹은 다른 조치를 취할 수 있을 것이다. 해커는 B의 2대만 공격할 것이 아니라 A의 50대 또한 공격을 감행 해야지만 B의 블록을 최종적으로 변조시킬 수 있다.
Anchoring data
앵커링에 사용할 데이터는 정해져 있지 않다. 블록 정보 전체를 저장하거나, 블록 해시/타임스탬프/높이 등 블록 파라미터의 일부를 기록하거나, 블록의 머클 루트를 기록하거나, 한 블록 전체의 해시값을 기록하거나, 어떤 블록 범위의 (e.g. block1~block1000) 값에 대한 전체 해시 값을 기록하거나.. 어떤 값이든지 블록의 무결성을 확인 할 수 있는 값이라면 사용 가능하다.
Trade-off는 존재할 수 있는데, 블록 정보 전체를 기록하면 값이 변화된 정확한 위치를 찾을 수 있지만 앵커링을 위한 gas fee가 보다 많이 사용될 수 있다. 하지만 블록 범위의 해시값을 사용한다면 범위 내의 어떤 블록 중 변조된 사실은 확인할 수 있으나 정확한 높이를 확인할 수 없는 반면 gas fee는 현저히 적게 사용하여 앵커링을 경제적으로 운용할 수 있을 것이다.
Plasma & Polygon PoS
Anchoring 포스팅 중에 뜬금없이 Ethereum plasma를 언급한 이유는, Plasma가 앵커링과 동일한 개념을 사용하기 때문이다.
Ethereum plasma의 경우 사이드체인(~=child chain)의 블록 merkle root와 block root를 주기적으로 메인체인에 배포된 컨트랙트에 기록한다. 역시나 plasma체인의 보안성을 메인체인 ethereum에 의존하여 조금 더 보안성 높은 체인을 구축하기 위함이다.
Plasma와 PoS를 사용하여 layer2를 구현한 Polygon PoS의 경우도 비슷하다.
Ethereum main chain에는 checkpoint contract(Bor에 생성된 블록 정보를 주기적으로 기록하기 위한 contract)를 배포한 상태에서, PoS 컨센서스를 이루는 Heimdall이 Bor가 생성한 블록을 검증 후 블록 root를 주기적으로 checkpoint contract에 기록하여 Bor 블록의 data integrity를 강화한다.
앞선 개요에서 설명했듯이 앵커링이라는 직접적인 개념이 근래에 자주 언급되지 않더라도 private chain 아키텍처를 벗어나 sidechain 기술 내에 자연스럽게 녹아 있음을 확인 할 수 있다.
Cosmos based chain의 anchoring 응용
Layer2와 sidechain은 ethereum 진영에서 많이 사용된다. Cosmos의 경우, 메인넷에 종속되어 있는 sidechain보다는 메인넷 간의 interchain 개념을 우선시 하여 layer2는 잘 보이지 않는다.(해당 의견은 주관적인 의견이다. cosmos chain과 관련된 layer2에 대한 지식이 부족한 관계로..) 만약 특정 cosmos 기반 메인넷이 사이드체인 및 layer2를 구축하려 한다면 어떤 방향으로 가야할 지 생각해 보았다. (이번 포스팅은 대부분이 필자의 의견이라 동의하지 못하거나 틀린 정보가 있을 수 있기에 insight용으로 참고로만 봐주시면 좋겠다.)
Mainchain과 sidechain은 별개가 아닌 유기적인 하나의 플랫폼이기 때문에 각 체인은 2-way peg등을 이용하여 자산을 교환할 필요가 있다. Mainchain과 sidechain 모두 cosmos-sdk 기반 체인이라 가정 했을 시의 자산 교환은 어떻게 할 것인가. Cosmos는 IBC라는 훌륭한 체인 간 자산 교환 기능을 탑재할 수 있다. Cosmos에는 그외에도 이미 좋은 기능이 존재하기 때문에 anchoring만 추가하여 sidechain을 구성할 시 예상되는 구조를 확인해본다.
대표적인 사이드체인 플랫폼 Polygon PoS와 비교하여 어떤 방향으로 구축 가능할 지 정리해 본다. Polygon의 기능과 대응되는 cosmos sidechain architecture(이하 cosmos S)의 기능은 아래와 같을 것이다.
Polygon | 구분 | Cosmos S |
---|---|---|
Ethereum 내의 staking contract | PoS (DPoS) | sidechain의 staking module |
Ethereum 내의 Rewards contract | Reward | sidechain의 staking/distribution module |
Heimdall PoS consensus | Consensus | sidechain의 tendermint |
Bor의 generate block | Block 생성 | sidechain의 tendermint |
Ethereum 내의 checkpoint contract | 블록 정보 저장 | mainchain의 anchoring contract |
Heimdall의 checkpoint | 블록 정보 전달 | Anchor |
Plasma bridge, PoS bridge, Deposit contract | 자금교환 | IBC Relayer, IBC module |
Bor내의 EVM 및 json RPC 등 | 사이드체인 기능 | sidechain의 Cosmos-SDK modules |
언급된 대응되는 기능들을 통해 cosmos에서도 polygon PoS와 유사한 구조의 layer2 아키텍처를 그릴 수 있을것 같다.
Conclusion
Anchoring도 한계는 명확하다. 보안성이 약한 체인이 공격받았을 경우에 대한 대비책은 명시되지 않았다. 블록 기록은 확인 가능하지만 fraud를 발견한 블록을 기준으로 revert하거나 조치를 취해야 될텐데 다른 체인으로 자금이 흘러 나갔다면 큰 이슈를 발생시킬 수 있다. 이를 위해 optimistic rollup 등에서 차용하는 확정시간을 두어서 어느정도 시간이 흐른뒤 transaction을 confirm하거나 해야할 듯하다. Plasma가 가지고 있는 문제점과 비슷하게 sidechain의 operator가 의도적으로 tx data를 공개하지 않을 시 왜곡된 상태값을 mainchain에 기록해도 틀렸다는 것을 증명할 수 있는 방법이 없다. 즉, data availability 문제가 발생할 수 있는데 이 anchoring은 이 문제를 해결할 수 없다. 이러한 문제점 들이 있기 때문에 여러 확장 플랫폼들이 rollup을 사용하려 하는것으로 추측된다.
Anchoring의 원리는 단순하다. 보안성이 비교적 약한 블록체인의 블록 정보를 보안성이 더 강한 블록체인에 기록하는 것이다. 한계가 있지만 단순한 기술로 체인 플랫폼의 보안성을 강화 시키는 방법이기 때문에 여러 프로젝트에 권할만 할것 같다.
참고
http://wiki.hash.kr/index.php/%EC%95%B5%EC%BB%A4%EB%A7%81
https://github.com/tokamak-network/plasma-korea/blob/master/2_Plasma.md
'Blockchain > Base' 카테고리의 다른 글
블록체인 계정 주소 checksum (0) | 2025.02.03 |
---|---|
랜덤 변수에서 도메인까지, 블록체인 키와 계정 주소 (0) | 2024.11.14 |
블록체인 기반 인증 서비스, DID (1) | 2023.12.18 |
Gossip protocol on Blockchain (0) | 2023.06.15 |
2-way Peg concept (0) | 2023.06.14 |