티스토리 친구하기

블록체인/이더리움 프로그래밍 정의에 해당하는 글 2

[블록체인]샤딩(Sharding)&이더리움(ETH)

반응형

 

[블록체인 기획] 샤딩(Sharding)&이더리움

 

이더리움 로고

 

◎샤딩(Sharding)이란?

전통적으로 관계형 데이터 베이스에서 데이터를 분할하는 기술이다.

 

DB 샤딩

 

이더리움의 근본적인 원인

 

 

이더리움(ETHEREUM) 샤딩의 이유는?

메인엣을 여러 개의 작은 네트워크들로 분할하여 이더리움의 확장성을 확보하기 위함.

 

1) 이슈

      •  

                기술적 운영적 측면에서 최적방안 탐색 및 선정의 이슈가 있다.
      •         코인 이코노미 측면 참여자의 이해 관계의 이슈가 있다.

 

2) 현황

      •         활발한 연구 및 프로토타입 코드의 실험 단계이다.
      •         본격도입을 위해서는 이더리움재단 내부합의 및 기존 노드운영자들의 합의가 필요하여 상당한 시간이 소요될 것으로 예상된다.

 

3) 고려사항

      •         현재 네트워크 노드 부담하는 하드웨어 비용증가를 고려해야 
      •         하위 네트워크 내부 트랜잭션에서 기존 트랜잭션의 방식 사용성이다.
      •         네트워크 간 트랜잭션은 트랜잭션 요청 영수증 기반처리에 대한 부분을 고려해야 한다.

 

샤딩(Sharding) 블록체인 형태

샤드 간 트랜잭션

( 영수증 기반 처리 )
샤딩(Sharding) 관련 이슈
      •         중앙화 이슈.
      •         보안성 이슈.
      •        1% attack : 100개 샤드 시스템으로 오직 1%의 hash rate로 샤드 지배 가능성이 있음.
      •        샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면, 커뮤니케이션으로 인한 시간 지연의 문제가 발생함.
 
샤딩(Sharding) 적용가능 방식
    • 네트워크 샤딩
    • 트랜잭션 샤딩
    • 스테이트 샤딩

 

1) 네트워크 샤딩

      •         임의로 네트워크가 무작위로 느드를 샘플링하여 블록 단위로 샤드를 형성하는 것이다.
      •         네트워크가 샤드의 구성원에 대한 동의를 구하지 않아 구성원들이 원하는 방향으로 가지 않는 경우, 구성원들의 불만을 해결하지 못한다는 단점이 있다.

 

2) 트랜잭션 샤딩

      •         트랜잭션 해시의 마지막 몇 비트를 기반으로 샤드를 결정하고 트랜잭션의 유효성을 확인한다.
      •         사용자가 악의적인 경우, 동일한 두입력이지만 출력이 다른 트랜잭션을 생성할 수 있다.
      • 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들간의 통신이 필요하다.

 

3) 스테이트 샤딩

      •         Account-based model 이다.
      •         상태가 지정된 블록체인에서 특정 샤드는 상태의 일부만을 유지한다.
      • 교차분할 트랜잭션을 수행하지 못하도록 제한됨.
      • 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더이상 오프라인 샤드에 대한 트랜잭션의 유효성을 검사하지 못하게 된다.
      • 오프라인 샤드를 유지하기 위해 백업 노드를 갖게된다면 중앙집중식이 되어 보안성에 위협이 된다.
      • 네트워크가 한 번씩 재편성될 때 한번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때 까지 전체 시스템을 사용할 수 없게 될 수도 있다.

 

샤딩(Sharding) 관련 과제

 

 

1) 난수생성

 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작할 수 있다면, 샤딩 보안에 문제가 생길 것이다. 기존의 RANDAO 난수 생성방식을 VDF(Verifiable Delay Function)를 통하여 개선하는 중이다.

 

 

2) 빠른 샤드 전환

 샤드에 대한 공격 성공 가능성을 줄이고자 한다면 검증자를 빠르게 전환해야 한다. 이를 위하여 이 전부터 터 look ahead time을 두어 검증자가 자신이 맡을 샤드 블록을 미리 동기화 시킨다. 미리 동기화하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 stateless client를 제안한다. stateless client는 블록 헤더만을 저장한다. 하지만 블록헤더만을 저장하기 때문에 거래에 대한 검증은 불가능하다. 거래 검증을 하려면 거래를 만들 때, 검증에 필요한 witness를 첨부해야 한다. 아니면 영지식을 사용하여 witness의 크기를 줄이는 방법도 제안되었다.

 

 

3) 자료 가용성

 만약 모두가 stateless client라면 블록의 내용을 손실할 수 있다. 그렇기 때문에 누군가는 state를 저장하고 있도록 해야한다. 이를 위해 적절한 보상과 검증 (Proof of Custody)가 필요하다. Fisherman 딜레마는 Erasure Coding으로 해결 가능하다.

 

 

4) 검증자간 효율적인 통신

샤드 배정이 자주 바뀌는 상황에서 샤드 검증자들끼리의 효율적인 P2P 통신은 필수적이다. 이를 위해, libp2p floodsub gossipsub (meshsub)이 사용된다.

 

 

5) 샤드 간 비동기 통신

거래 당사자나 스마트 계약이 여러 샤드에 나누어져 있다면 샤드 간의 통신(cross-shard communication)이 필요하게 된다. 하지만 여러 단계를 거치게 되므로 시간이 오래 걸리므로 결국 메인 체인에 무리를 주게되고 이렇게 샤드 간 통신이 너무 자주 일어난다면 샤딩이 가지고 있는 장점은 사라지게 된다. 이에 이더리움은 crosslink를 가지고 메인체인의 무리를 덜고, yanking으로 필요한 스마트 계약을 현재 샤드로 가져와 샤드 간의 통신을 줄이고자 한다 .또한 현재 지연상태 전이 (delayed state transition)을 통한 샤드 간의 비동기 통신도 구상 중에 있다고 한다.

반응형

댓글()

[블록체인]1.3.2 블록체인 P2P 컴퓨팅

반응형

블록체인 P2P 컴퓨팅






P2P 컴퓨팅

P2P(Peer-to-Peer) 컴퓨팅은 네트워크에 참여한 모든 컴퓨터가 동일한 역할과 기능을 수행하는 컴퓨팅 처리 방식을 말한다 (일반적으로 P2P 네트워크상의 컴퓨터를 노드 또는 피어 등으로 부르는데, 이는 모두 같은 의미이다. )

 동일한 역할과 기능을 수행한다는 말은 해당 컴퓨터가 클라이언트인 동시에 서버이기도 하다는 뜻이다.

현재에도 다양한 P2P 컴퓨팅 기반 서비스들이 존재하고 있다.

 

P2P 파일공유서비스

  • 냅스터(Napster),
  • 그누텔라(Gnutella),
  • 프리넷
  • 카자아

 

P2P 프로세스 공유 서비스

  • 세티앳홈(SETI@Home),
  • 폴딩앳홈(Folding@Home),
  • 디스트리뷰티드닷넷
  • 월드와이드 컴퓨터

 

P2P 메시징 서비스

  • 비트토렌트의 블립

반응형

댓글()