Flow blockchain (w/NBA Top Shot) overview

2023. 6. 14. 10:51Blockchain/Overview series

728x90
반응형

※ 원글 작성 : 22년 5월 11일

 

Flow 블록체인은 NFT 대표 상품으로 유명한 NBA Top shot의 기반 플랫폼이다. NBA 선수들의 3점슛, 덩크, 어시스트 등 멋진 플레이를 짧은 영상으로 만들어 이를 내가 소유하고 사고 파는 것이 Top shot의 기본 개념이다.
Top shot의 인기는 엄청난 브랜드인 NBA를 등에 업은 덕분에 잘 나가고 있으며, 르브론 제임스의 덩크가 21년 2월 23일에 20만 8천 달러에 거래가 되었다.


실제로 Top shot에서 moment pack을 사고, 팔기도 해봤는데 내가 좋아하는 팀의 좋아하는 선수를 NFT로 가질 수 있다는 수집욕을 불러일으켜서 재미가 있었다.

워리어스의 팬이라 커리나 탐슨의 moment를 얻길 바랬지만.. 잘 나오지는 않더라.
내가 가진 moment 중 가장 비싼것은 폴 피어스의 셀틱스 시절 로고샷 장면이었다. 제일 비싸게 거래된 가격은 1000달러가 넘었지만 평균적으로 18달러로 거래되고 있다.

Top shot의 인기 덕분인지는 몰라도 우리나라에서도 프로스포츠의 NFT가 생겨나기 시작했으며, 21년에 블루베리NFT가 프로야구 등과 파트너 계약을 통해 NFT 시장에 진출하려 한다.

Top shot, 크립토키티 등의 개발사인 Dapper labs가 고안한 Flow 블록체인에 대해 알아보면 좋을것 같아서 Flow를 확인해본다.


Flow

Explorer

현재 Flow explorer에서 확인되는 staking 양이다. 현재 블록체인 전체가 떡락 중이라 \4500 정도 되는데, 계산하면 3조원이상이 staking 중이다. 현재 407개의 노드가 운영 중이며, 31082의 delegator가 존재한다.

아래에서 설명될 4가지 노드별로 delegator가 따로 staking 할 수 있음이 확인된다.

논외로, 주목하고 있던 블록체인인 Terra의 luna가격이 폭락하고 있는것을 눈으로 목격중인데 충격적이다...

각설하고 flow를 확인해봐야겠다.

Overview

Flow blockchain은 Cadence라는 dapp 및 digital asset을 위한 프로그래밍 언어를 개발하고, 이를 기반으로 프로그램을 개발했다. 개발자가 쉽게 crypto business를 구축하도록 지원하는 큰 방향성을 가지고 블록체인을 설계하였으며, 샤딩 없이 확장성을 가질 수 있도록 해서 속도와 처리량을 개선했다고 한다.
타 블록체인과의 차이점은 아래와 같다.

  • Multi-role architecture
    • 네트워크 분할 및 합의 분산을 줄이지 않고도 확장 가능
  • Resource-oriented programming
    • 암호화 자산 및 앱을 위한 쉽고 안전한 언어인 Cadence로 작성
  • Developer ergonomics
    • 컨트랙트 업그레이드, 빌트인 로깅 지원, flow 에뮬레이터 등 개발자를 위한 설계
  • Consumer onboarding
    • 법정화폐에서 암호화폐로의 안전한 환전

Multi-node architecture

Separating consensus from compute

Flow 아키텍처에서 Non-deterministic(=subjective)와 deterministic(=objective)로 프로세스를 분리 및 노드를 해당 유형들로 분리하고 블록체인 성능을 높인다.

  • Non-deterministic 예시 : 트랜잭션의 presence, order를 결정하는 작업
  • Determisitic 예시 : 이미 결정된 트랜잭션의 결과 computing

Non-deterministic 작업에는 consensus process가 필요하지만 deterministic 작업에는 객관적으로 올바른 단일 결과를 갖는다. Flow에서 생각하는 체인 성능의 bottle neck은 트랜잭션이 이미 블록에 포함된 후 트랜잭션을 실행하는 deterministic 작업이며, non-deterministic 작업인 블록 자체의 형성은 해당하지 않는다. Consensus process와 computing 작업의 분리는 논문에서 설명하고 있다.

논문에서 설명하는 consensus와 compute를 나누기 위한 architecture에는 두가지 role(consensus & execution)을 수행하는 node가 분리되며 개념은 다음과 같다.
크게 consensus nodesexecution nodes로 분리되며, 각각의 노드 타입은 subjective와 objective의 역할을 수행하게 된다.

  • Consensus role
    • Consensus nodes는 transaction들을 수집해서 BFT 기반의 consensus algorithm을 적용하여 블록을 생성한다. 블록은 트랜잭션을 참조하고 execution 순서를 정의하지만 block execution후의 계산(computational) state의 결과에 대해서는 포함하지 않는다. 따라서 Consensus nodes는 computational state와 execute transaction를 유지할 필요가 없다.
  • Execution role
    • Execution nodesConsensus nodes에 의해 실행 순서가 결정되었을 때 트랜잭션들의 수행 결과를 확정짔는데 필요한 raw computational power를 제공한다. Execution nodes는 Execution Receipts의 형식으로 수행된 결과를 확인해주는 암호화된 증명서 또한 제공한다. 이 Receipts는 Execution nodes가 incorrect한 결과를 보여줄 때 challenge에 사용될 수 있다.

Flow Multi-Role Architecture

위에서 언급한 Consensus NodesExecution nodes 외에도 여러 role을 수행하는 node가 존재한다.

  • Consensus nodes : 블록 내의 트랜잭션 presence와 order를 결정
  • Verification nodes : Execution nodes를 점검
  • Execution nodes : 각 트랜잭션의 계산을 수행
  • Collection nodes : dApp에 대한 네트워크 연결및 데이터 가용성을 향상

아래는 Flow 블록체인을 구성하는 각 노드들의 역할을 시각적으로 표현한 그림이다.

Consensus nodesVerification nodes는 Flow 네트워크의 보안의 중심이 되며, crypto 경제 인센티브를 사용하여 나머지 네트워크 구성원들에게 책임을 부여한다. 이러한 validators는 보안 및 분산화를 위한 최적화를 할 수 있다. Consensus nodes가 수행하는 consensus 알고리즘은 PoS 알고리즘 중 하나인 HotStuff의 변형이다.

Execution nodesCollection nodes는 deterministic 작업을 수행하므로 외부 공격에 덜 취약하고, Verification nodes등 다른 노드 유형에 의해 올바른 결과를 수행하는지 checking 된다.

Transaction processing flow

단순화된 시각화 프로세스의 상세 flow는 위 그림과 같다.

  1. @Colletion nodes
    collector들의 cluster가 존재하고, 각 cluster는 특정 시간에 하나의 collection만 유지한다. 트랜잭션을 수집하여 만드는 collection 생성 과정이 끝날 시 cluster의 collection nodes의 2/3 이상이 sign하여 validity를 보장한다.
    해당 collection을 Guaranteed collection이라 하며, [collectionHash, clusterIndex, aggregatedCollectorSigs]를 포함하는 메시지를 Consensus nodes로 전송한다.
  2. @Consensus nodes
    Consensus nodes들이 Guaranteed collections를 수신하면 BFT consensus algorithm을 통해 블록을 생성한다. 블록의 구조는 아래 코드와 같다. 트랜잭션들을 ordering한 후 block을 finalize하여 네트워크 전체에 block message를 broadcast한다.
  3. @Execution nodes
    Execution nodes가 finalized block을 수신하면 다음 2개의 information을 따를 시 블록을 compute 할 수 있다.
    • 이전 블록의 execution result가 현 시점 블록의 시작 역할을 수행하므로 반드시 available해야 한다. 대부분의 경우 Execution nodes는 이전 블록도 계산했었고, 결과 출력 상태를 알고있다. 그렇지 못할 시 Execution nodes가 다른 Execution nodes에서 이전 블록의 결과 상태를 요청할 수 있다.
    • Execution nodes는 블록에서 참조된 모든 collection의 텍스트를 Collection nodes에서 가져와야 한다.
      위 조건을 만족할 시 노드는 execution을 수행하고, 수행 결과인 'Execution receipt'를 Consensus nodesVerification nodes로 broadcast한다. Execution receipt는 'Chunk'로 구성되며 이 chunk를 통해 execution 결과를 검증한다.
  4. @Verification nodes
    검증 프로세스는 계산 결과의 안전성을 확률적으로 보장하도록 설계되었다. 계산 안전(Computational safety)의 중요한 측면은 Verification nodes가 서로 독립적으로 검사할 Chunk를 스스로 선택한다는 것이다. Verification nodes는 각 Chunk의 transaction 내용을 Collection nodes에 요청하고, Chunk를 verification 하기 위한 Registers를 Execution nodes에 요청한다. 각 정보를 수신받으면 Chunk 내의 transaction을 검증하고, 검증 결과를 Consensus nodes로 전달한다.
  5. @Consensus nodes
    Verification nodes로 부터 이상이 없다는 결과(Result Approval)를 수신하면 이미 finalized된 block을 봉인(sealing)한다. Sealing된 block은 네트워크 상의 새로운 블록으로 확정되어 publish된다.

Developer-First Experience

Flow의 개발사는 여러 dApp 개발한 경험을 통해 개발자 친화적으로 블록체인 플랫폼을 설계했다.
Smart contract 언어에 대한 학술적 연구에 따라 디지털 자산 친화적인 새로운 언어인 Cadence를 개발했다. 또한, 오픈소스 tool도 많이 제공한다. Go/JS 기반 Flow SDK, VS code extension, Flow playground GUI등을 제공한다.

Contract는 블록체인에 배포된 후 수정/개선이 어렵기 때문에 smart contract가 beta상태로 메인넷에 배포되도록 허용하여, 개발자가 점진적으로 업데이트 할 수 있도록 한다. 개발자가 코드가 안정됨을 확신하면 contract에 대한 제어권을 취소할 수 없게 만들어 contract가 수정 불가능한 상태가 된다.
외에도 빠른 blockchain finality를 지원하며, 로깅 기능이 체인 내에 빌트인 되어있다.


Conclusion

비트코인, 이더리움으로 대표되는 일반적인 public blockchain의 경우 각 노드가 transaction 수집, smart contract execute, 블록 생성 및 consensus 알고리즘 수행 등의 역할을 모두 수행하였다. 다른 PBFT 기반 블록체인들도 validator node, delegator node 등으로만 역할을 나눴고, 엔터프라이즈형 블록체인인 Hyperledger Fabric의 endorsing peer, commitment peer, orderer, CA등 각 노드를 세분화하여 다른 역할을 수행하는 정도로 Flow 블록체인은 아키텍처를 설계하였다. 상식적으로 생각해도 한 노드에서 많은 역할을 수행하는 것보다 더 나은 처리량을 보여줄것이다. 또한 개발자 입장에서 블록체인 기반 dApp을 더 쉽게 개발하도록 tool이나 구조를 제공해주는것도 반가웠다. 단지 Cadence라는 언어가 어떤 방향성(개발이 더 쉽고, 디지털 자산 특화)을 가지는지에 대한 설명만 보아서 습득 난이도를 모르겠지만 새로운 언어를 배우는 것은 또다른 노력과 시간이 투입되어야 하기 때문에 타 블록체인에서 많이 채용하는 언어도 병행하면 더 좋았을것 같다는 아쉬움도 따라왔다.

Flow가 채용한 SPoCK나 Chunk 생성방법, Chunk를 이용한 verification 과정에 대해 더 공부할 것이 남아 있으니 Flow라는 블록체인도 지속적으로 살펴볼 것이다.

참고
https://onflow.org/primer
https://arxiv.org/pdf/1909.05821.pdf
https://arxiv.org/pdf/1909.05832.pdf

728x90
반응형

'Blockchain > Overview series' 카테고리의 다른 글

Private transaction 전송을 위한 Tessera Overview  (0) 2024.11.08
Oasys Overview  (0) 2023.07.10
BSC(Binance Smart Chain) overview  (0) 2023.06.14
Hyperledger Cactus overview  (0) 2023.06.14
Tendermint Consensus overview  (0) 2023.06.14