Layer1 & Layer2

in layer •  2 years ago  (edited)

Layer란?

Layer란 영어 단어 그대로 층을 의미한다. 최근 Layer 1 블록체인, Layer 2 블록체인 이런 느낌으로 나누는 것을 생각하면 '세대'개념으로 받아들여질 수도 있겠으나 아래 그림을 보면 Generation보다는 Layer가 더 적합한 표현이 맞는 것 같다. 아래의 그림은 탈 중앙화된 서비스의 Layer를 나타낸 그림이다.

image.png

Layer 0 는 네트워크 단계이다. Layer1는 블록체인이며 Layer2는 블록체인의 확장성을 위해, 기존 블록체인 위에서 동작하는 추가적인 생태계라고 생각하면 된다.

Layer1

Layer1에는 대표적으로 다음과 같은 블록체인 네트워크들이 속한다.

  • 비트코인
  • 이더리움
  • 솔라나
  • 에이다
  • 클레이튼
  • 폴카닷
  • 故 루나...

이들은 우리가 기존에 공부한 Standard Blockchain이라고 생각하면 된다. Layer1에서는 비용과 속도문제가 지속적으로 일어났고, 각 Layer1끼리 확장성 있는 교류가 일어나지 못했다.

Layer 2

Layer2는 기존의 블록체인 시스템(Layer 1 blockchain)위에서 동작하는 framework, protocol이다. Layer2는 Layer1의
비용, 속도, 확장성 등의 한계를 극복하기 위해 만들어졌다. 이들의 trasaction성능, 수수료는 비트코인이나 이더리움에 비해 월등하다.

##Layer2 Scailing Solutions
Layer2에서 확장성 문제를 해결하기 위해 적용한 방법은 다양하다. Layer 2에서의 확장성은 두 개의 큰 축으로 이루어진다. 하나는 trasaction excution이고, 다른 하나는 data availability이다.

Transaction execution이란 trasaction이 어디에서, 어떻게 동작하고 신뢰 환경은 무엇인지, 탈 중앙화가 어떻게 이루어지는지 등에 대한 것이다.

Data availability는 Layer2의 transaction data를 본래의 Layer1 Chain에 등록할지 말지에 대한 것이다. Layer2에서 확장성 문제 해결을 위해선 다음과 같은 방법들이 사용되었다.

  1. State Channels
  2. Side Chains
  3. Roll ups
  4. Plasma
  5. Validiums
  6. Volitions

Scailing Solutions

1. State Channels

image.png

StateChannels는 블록체인 scailing을 위해 가장 먼저 시도된 방식이다. State channels는 두 명 이상의 유저가 신뢰할 수 있는 환경에서 매번 gas요금을 내지 않고 여러 개의 transaction을 수행하고자 할 때 사용된다.

StateChannel의 개념은 간단하게 말하면, 세세한 tranasaction들은 blockchain에 기록하지 않고 off-chain으로 관리하며 중요한 정보들만을 blockchain에 기록하도록 하는 방식으로 비용을 줄이는 것이다.

예를 들어 이더리움 블록체인 기반의 음악 스트리밍 서비스를 사용하며 음악 저작권에 대한 사용료를 내야 한다고 해 보자. 만약 음악을 들을 때마다 ETH transfer를 발생시키면 gas수수료는 터무니 없이 비싸질 것이다. State Channel로 이를 해결한다면, 한 달이 시작할 때 State Channel을 열고 한 달이 지난 이후 State Channel을 닫으며, 해당 채널(한 달의 기간) 동안 누적된 로열티에 대한 금액을 지불하는 식으로 서비스를 구성하는 것이다. 이를 통해 수수료를 절감할 수 있다.

또한 이런 방식은 보안적으로도 우수하다.
예를 들어 Alice와 Bob이 이더리움으로 tic tac toe게임을 하며, State Channel방식을 이용해 게임의 최종 결과와 금액만을 메인 블록체인에 기록하도록 했다고 해보자.

이 때 신뢰할 수 있는 두 개인인 Alice와 Bob사이의 각각의 transaction들은 블록체인에 기록되지 않는다. 이때 수수료가 절감되는 것 이외에도 아주 개인적인 transaction영역은 공개되지 않는다는 점에서 보안 상의 이점을 가진다.

Side Chains

image.png

Side Chain은 메인 블록체인과 병렬적으로 동작하며, Layer1 채널을 가진 독립된 블록체인이다. Side Chain은 그들만의 validator과 consensus method를 가지고 있으며, transaction을 저렴하고 빠르게 처리한 뒤 이를 main chain에 보내어 쌓는다.

Side Chain 역시 EVM 기반으로 이루어지며, 일종의 작은 이더리움 블록체인이라고 볼 수 있다. 그렇기 때문에 Side Chain은 solidity기반의 smart contract나, web3 API등 기존 이더리움의 장점을 그대로 사용할 수 있다.

그러나 이런 Side Chain에도 문제점이 있는데, 그것은 바로 완벽한 탈중앙화가 보장되지 않는다는 것이다. 앞서 각각의 Side Chain에서는 독립된 검증방식과 합의 알고리즘을 통해 transaction을 저렴하고 빠르게 처리한다고 했다. 다른 관점에서 보면 이는 기존 시스템에서 사용하는 검증, 합의 방식을 사용하지 않는다는 것이고 Side Chain에서 사용하고 있는 consensus protocol은 덜 안전하거나, 비교적 중앙화 되었을 가능성이 있다.

Side Chain은 main chain의 보안 시스템 위에서 동작하지 않기 때문에 엄밀히 말하면 Layer 2라고 할 수 없다. 그러나 일반적으로 Layer 2와 함께 다루어진다.

Rollups

Rollup은 Layer2에서 transaction을 일으키며, 이들을 요약된 bundle형태로 묶어 Layer1에 기록하는 방식이다.
Rollup에는 크게 Optimistic과 Zero-Knowledge라는 두 가지 방법이 있다.

Optimistic Rollups

image.png

Optimistic Rollup에서는 요약된 bundle형태의 transaction data가 main chain에 기록될 때, 기본적으로 유효하다고 가정을 한다. 단, 다른 유저들은 여기에 이의를 제기할 수 있다.

어떤 참여자든 어떤 transaction에 대해 Claim을 제출할 수 있으며, 만약 그것이 실제로 잘못된 transaction이라면 해당 transaction은 roll back된다. 만약 어떤 참여자도 claim을 걸지 않는다면, 그것은 main chain에 기록된다. 유저들이 Claim을 걸 충분한 시간을 제공하기 위해 transaction이 main chain에 기록되기 까지는 1주일에 가까운 시간이 걸린다.

이런 Claim을 걸고 검증하는 시스템에서도 수수료가 소비되기 때문에 optimistic rollup에서는 bad actor를 방지하기 위해 다음과 같은 3가지 역할을 두었다.

  1. 'Asserter' - main chain에 transaction의 proof를 기록하려는 사람이고, 그렇기 때문에 transaction의 유효성을 주장한다.
  2. 'Challenger' - Asserter의 transaction중 잘못된 부분을 잡아내는 사람들이다.
  3. 'Verifier' - main chain의 smart contract로 proof의 유효성을 잡아낸다.

Verifier가 Claim을 검증할 때 들어가는 비용에 대해서, 만약 해당 Claim이 사실이라면(새로 기록되는 transaction에 문제가 있는 경우) 이 비용은 Asserter가 지불하게 된다. 만약 Claim이 잘못되었다면, 이 비용은 Challenger가 지불하게 된다.

ZK Rollups

ZK란 zero knowledge를 의미한다. 이 방식은 사용자가 데이터에 대한 어떤 추가적인 정보도 제공하지 않고, 한 집단이 다른 집단이 가진 데이터의 유효성을 검증해줄 수 있는 방식이다.

zero knowledge proof에 대한 자세한 설명은 아래 링크에서 참조할 수 있다.
https://en.wikipedia.org/wiki/Zero-knowledge_proof

자료가 부족하다고 생각해 ZK 증명에 대해 쉽게 설명한 예시를 하나 가져와보았다.

Alice와 Bob이 동굴에 있고, 동굴의 반대쪽에는 굳게 잠긴 하나의 문이 있다고 생각해보자. 이 문은 동굴 입구에서는 보이지 않으며 Alice는 이 문을 열 수 있는 열쇠를 가지고 있다.

Bob은 동굴의 입구에 서 있기 때문에 Alice가 문을 여는 장면을 볼 수 없다. 또한 Alice는 다른 사람에게 열쇠에 관한 정보를 알리지 않으면서 Bob에게 자신이 열쇠를 가졌다는 사실을 증명하고 싶다.

이 때 다음과 같은 방식을 사용할 수 있다.

image.png
Bob이 동굴 입구에서 기다리는 동안 Alice는 둘 중 아무 방향이나 골라 동굴이 들어간다.

image.png
Bob은 Alice가 나와야 할 통로를 동굴 안쪽으로 외친다.

image.png
Alice는 Bob이 말한 통로로 나오면 된다.

이 때 Alice가 키를 가지지 않고 Bob이 말한 통로로 나올 수 있을 확률은 1/2이다. 이런 과정을 20번만 반복해도 Alice가 Key를 가지지 않고 Bob의 답을 모두 맞출 수 있는 확률은 100만분의 1이하로 떨어지게 된다. 또한 Bob의 경우 자신이 Alice가 나올 통로를 모두 알려주었기 때문에 이것을 보고 Alice가 키를 가지고 있음을 확신할 수 있지만, 제 3자는 Alice가 동굴에서 움직이는 모습을 보아도 이는 어떤 증명도 될 수 없다. 이런 방식으로 상대방 이외의 누구에게도 정보를 주지 않으며 상대방에게 어떤 지식이 참이라는 것을 증명하는 방식이 Zero Knowledge proof이다.

ZK rollups에선 증명을 하는 개인이 없다. 대신 main chain에 transaction을 추가하려는 모든 사람은 zero knowledge proof를 거쳐야 하며 이것은 smart contract에 의해 자동으로 검증된다.

ZK vs Optimistic

ZK rollups는 자동적인 검증 시스템을 가지고 있고, challenger 나 asserter같은 시스템이 필요하지 않다. 또한 실제로 invalid proof를 제출했을 경우에만 gas 손실이 발생한다. 이런 관점에서 ZK rollups는 optimistic보다 훨씬 좋아보인다.

그러나 ZK rollups에도 단점이 있다. 먼저 ZK rollup 알고리즘을 만드는 것 자체가 어렵다. 또한 ZK proof의 구조는 상당히 복잡해질 가능성이 높으며, 이 경우 비용이 올라갈 수 있다.

Plasma

image.png

Plasma는 Layer2 application에서 scalable을 향상시키는 알고리즘이다. Plasma는 Side Chain과 비슷하게, 독립된 검증방식, 합의 알고리즘을 가진 Child Chain을 가진다. 이 때 Child Chain을 생성하는데 있어 Merkle Tree라는 자료 구조를 사용하며, 무한히 많은 Child Chain을 가지는 것이 가능하다.

Plasma는 Side Chain과 마찬가지로 스마트 컨트랙트를 트리 구조의 off-chain(Child Chain)에서 처리한 이후 이를 모은 배치 transaction을 Main Chain에 기록하고, 이는 처리 속도나 비용면에서 훨씬 더 효율적이다.

Scaling solution 비교

image.png

앞서 설명한 Scaling solution들의 특징을 비교하면 위의 그래프와 같이 생각할 수 있다. 두 축은 각각 보안성과 속도이다.

Data availability

이번에는 Layer2의 Data availability에 관해 알아보자. 기존에는 Main Chain에 모든 Data를 public하게 기록하도록 했는데 이는 Privacy issue를 발생시킨다. (예를 들자면 모든 거래가 public한 기록으로 남으므로 전문 투자회사들의 투자방식이 노출되는 등)

이런 Data availability관점에서 해결책을 찾으려고 한 Layer 2 블록체인들도 있는데 대표적으로 Vaildium Chain과 Volition Chain이 있다.

Vaildium Chains

Validium은 ZK rollups와 매우 유사하게 동작하지만 transaction을 오프체인에 기록하는 방식이다. Transaction이 이더리움 네트워크에 저장되지 않기 때문에 Validium은 초당 최대 1만개의 transaction 수준의 확장성을 허용하며, 여러 transaction의 병렬 수행이 가능하다.

그러나 Validium은 이더리움 네트워크의 보안성을 활용하지 않으며, 인출 지연을 제공하지 않는다는 단점이 있다.

Volition Chains

Volition Chains는 Validium Chains과 Rollups를 적절히 섞은 느낌으로, 데이터를 Main Chain에 올릴지 올리지 않을 지 유저가 결정할 수 있는 형태의 체인이다. 예를 들어 대형 trading회사에서는 매 trading정보를 Main Chain에 올리고 싶지 않을 가능성이 있다.
이 때 Volition Chains에서 이 trading company는 각각의 transaction은 올리지 않되, 주 단위로 일어난 거래와 profit/loss에 대한 정보를 Main Chain에 올리는 방식을 선택할 수 있다.

Alternative Layer 1

지금까지는 기존 Layer1의 한계와, 이런 한계를 Layer 2방식(기존의 Layer 1의 Legacy 위에서 동작하는 새로운 블록체인)으로 극복하고자 하는 사례들에 대해 살펴보았다.

다른 한편으로, 완전히 새로운 Layer 1을 만들려는 시도들 역시 존재한다. 이 경우 이더리움과 같은 기존의 레거시 블록체인에 의존하지 않고 프로토콜 단계부터 완전히 새로운 블록체인을 구축하는 것이다.
이번 챕터에서는 이런 Layer 1에 대해 알아볼 것이다. 여기에서 소개할 Layer 1의 종류는 아래와 같다.

  1. NEAR protocol
  2. Flow
  3. Avalanche
  4. Solana

NEAR protocol

NEAR protocol은 Parallel Sharding 스토리지와 scale을 위한 컴퓨팅 기술을 적용한 smart contract platform이다. 이더리움이 PoW방식을 사용하는 반면, NEAR protocol은 PoS(proof of stake)방식을 사용한다.

What is Sharding?

Shard란 전체의 작은 조각 일부를 의미한다. 블록체인에서 sharding이란, 모든 각각의 node가 모든 transaction을 가질 필요가 없이 blockchain이 작은 여러개의 파트로 나누어지는 것을 의미한다. 이 경우 validator는 자신이 속한 shard에서 실행되는 transaction만 신경쓰면 된다.
이런 Shard들을 관리하기 위해 일반적으로 Shard를 관리하는 Beacon Chain을 따로 만들게 된다.

NEAR protocol은 AssemplyScript와 Rust라는 언어로 만들어졌으며(둘 다 Low level 언어이다.)
이더리움과 마찬가지로 Http API를 제공한다.

Flow blockchain

Flow blockchain의 핵심 가치는 아래 4가지이다.

  • Multi-role architecture
  • Resource-oriented programming
  • Upgradeable smart contracts
  • Easy on-ramps from fiat to crypto

Multi-role architecture

기존의 블록체인은 모든 블록이 동일한 블록체인을 공유하는 방식이었다. 하지만 Flow의 경우 Pipeline개념을 도입하여 서로 다른 블록들이 다른 일들을 처리할 수 있게 구성하였다.
Flow는 validator node의 역할을 다음과 같은 4가지로 구분하였다.

  1. Collection
  2. Consensus
  3. Execution
  4. Verification

image.png

Flow의 구조를 묘사한 그림이다. Sharding은 scailing을 horizontal한 관점에서 접근했다면, Flow는 Vertical한 관점에서 접근해 각 노드가 Validation의 일부만을 처리하도록 구성하였다. 그렇기 때문에 각 노드는 각 작업에 특화된 처리를 할 수 있고, 이 때문에 Flow는 기존의 블록체인의 수천배 수준의 확장성을 가진다.

Resource - Oriented Programming

Avalanche

Avalanche는 DApp과 블록체인 생태계 구축을 위한 플랫폼이다. Avalanche는 높은 처리량과 즉각적인 거래 최종성을 제공하고 Solidity를 지원하는 Smart contract platform이다.

Solana

Solana는 샤딩 없이 빠른 처리속도를 구현하고자 하는 프로젝트이다. 솔라나의 가장 핵심적인 알고리즘은 Proof of History이다.

Proof of History

블록체인을 디자인하는데 큰 기술적 난관 중 하나는 Shared Clock이 부족하다는 것이었다. Bitcoin이나 Ethereum같은 블록들은 transaction의 순서를 매기기 위해 번호를 지급했지만, 이 경우 Block time이 끝나기 전까지 transaction이 끝나지 않는 단점이 있었다.(bitcoin의 경우 10분 이하, Ethereum의 경우 15초 이하)

PoH란 두 개의 이벤트 사이에 시간이 흘렀다는 것을 증명하는 암호학적 방법이다. 해시함수는 실행되기 전까지 그 output을 알 수 없는데, 그렇기 때문에 Hash1(이전에 일어난 hash)를 해시 함수의 인자로 사용해 hash2를 만들면 hash1는 hash2 이전에 일어났다는 증명이 된다.

https://medium.com/curg/proof-of-history-%EC%86%94%EB%9D%BC%EB%82%98%EC%9D%98-%EC%97%AD%EC%82%AC-%EC%A6%9D%EB%AA%85-ae5886f90d48

다른 블로그 글인데 솔라나를 아주 잘 설명해주신 것 같아서 링크를 남긴다.
피곤해서 여기까지만 정리해야겠다

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!