검수요청.png검수요청.png

스웜프로토콜

위키원
wlgns12244 (토론 | 기여)님의 2019년 8월 8일 (목) 11:44 판 (IPFS(InterPlanetary File System))
이동: 둘러보기, 검색

스웜프로토콜(swarm protocol)은 분산 저장된 데이터의 동기화를 실현하는 프로토콜이다. 이더리움재단빅토르 트론(Viktor Trón)이 이끄는 개발팀이 2014년 10월부터 정식으로 프로젝트를 만들어 개발을 추진하고 있다. 스웜 프로토콜은 현재 개발 진행 중에 있는 프로젝트이다.

개요

스웜(swarm)은 분산 저장 플랫폼이자 콘텐츠 배포 서비스이며 또한 이더리움 WEB 3 스택의 계층 서비스이다. 스웜의 주요 목표는 충족한 탈 중앙화 특성과 이더리움 퍼블릭 기록 복수저장의 기능을 제공하는데 있으며 특히 디앱코드와 데이터 그리고 블록체인 데이터를 분산화 저장하는데 있다.

스웜은 이더리움 가상 머신에서 작동하는 스마트계약에 따라 자동으로 집행되는 통계 프로토콜로 설계되었으며 물리적 저장 메커니즘과 관련이 없이 독립적이다. 즉 본질적으로 이는 전문적인 저장 시스템과 연대관계가 없다.

경제적인 측면에서 스웜은 사용자들이 효율적으로 자기들의 스토리지와 대역폭 리소스를 집계하여 네트워크의 전체 사용자들한테 서비스를 제공하게 한다.[1][2]

개발목표

스웜의 목표는 크게는 디앱의 개발자들 한테 특히 메세징, 데이터 스트리밍, P2P 통계, 가변 리소스의 업데이트, 스토리지 보험, 보관 검사와 수리증명(proof of custody scan and repair), 결제 채널과 데이터베이스 서비스 영역에서 기반시설을 제공하고 저 하는데 있다

스웜은 P2P 저장기능 외에 P2P통계와 결제에 사용되는 리소스 트레이딩을 지원하는 인센티브 시스템으로 DDoS-대항(DDoS-resistant), 다운타임이 없는(zero-downtime), 실수허용(fault-tolerant) 그리고 감시방지(censorship-resistant), 셀프-유지(self-sustaining) 기능을 구현하는 서비스 솔루션을 제공한다.

스웜은 이더리움의 devp2p 멀티 프로토콜 네트워크 계층과 이더리움 블록체인에 깊게 집적화되어 도메인 이름 해석 (ENS 사용), 서비스 결제와 콘텐츠 가용성 보험 등 이슈를 해결한다.[1]

등장 배경

이더리움 블록체인은 스마트계약 형식으로 블록체인 위에 탑재한 디앱의 실행을 지원한다. 이더리움 스웜의 설계는 Web 3.0 패러다임과 탈 중앙화 데이터 스토리지 솔루션 서비스 확장 방식으로 디앱을 지원하는데 그 목적이 있다. 단, Web 3.0 모델을 완전하게 탈 중앙화 방식으로 가동하기에는 상당한 어려움이 존재한다. 그 이유중의 첫 째는 스마트계약과의 통신은 복잡하고 사용자 체험성이 안 좋으며 해결방안으로 대다수의 디앱들에서 오프-체인 프론트-앤드로 구성된 웹 인터페이스를 제공한다. 이는 전통적인 웹 서버와 HTTP프로토콜이 필요하며 중앙화 요소들이 개입된다는걸 설명한다. 둘 째는 대용량 데이터 블록체인 저장비용이 상당히 높다. 이로 원인으로 디앱은 통상적으로 발생하는 데이터를 오프 체인방식으로 저장하며 지적해야 부분은 데이터베이스 관리 시스템이나 전통적인 파일시스템은 탈 중앙화 모델과 어긋난다는 것이다.

수동하는 중앙화 요소들을 탈 중앙화 방식의 저장 해결방안에 적용시키는 방법은 간단한 아이디어로 해석할수 있다. 즉 복수형식으로 집적화 된 (built-in redundancy) 연대 노드들의 P2P 네트워크는 리소스를 집계하며 이 과정에 분산방식의 클러우드 저장 솔루션 역할을 한다. 원리적으로 오프체인의 디앱 데이터와 디앱을 구성하는 프론트-앤드(front-end) 파일을 포함 한 데이터는 유형을 물론하고 탈 중앙화 네트워크에서 지원이 가능하다.

분산 저장 솔루션에서 제일 잘 알려진 방식은 IPFS방식이며 이는 분산된 해시테이블 데이터구조로 네트워크 노드를 통하여 콘텐츠를 저장한다. 단, IPFS 콘텐츠는 데이터 원 소유자가 직접 작업하면서 관리하기 전에는 성공적인 데이터 전송을 보장 못한다. 원인은 네트워크를 경유하는 콘텐츠 전송이 제일 인기 있는 콘텐츠 전송을 우선으로 하다보니 인기가 별로 없는 콘텐츠는 쓰레기로 취급 받기 때문이다. 탈 중앙화 스토리지 솔루션에서 콘텐츠를 호출하는 인센티브나 노드의 취약성은 보편적인 문제점이다.

스웜은 탈 중앙화 파일저장 네트워크에서 이더리움이 추진하는 프로토콜로서 클라이언트 Ethereum Geth의 지원하에 작동하며 스토리지 네크워크와 통신을 진행한다. 이는 이더리움 블록체인과 긴밀히 연계되며 이더리움 계정을 요구한다. 구체적인 데이터 저장방식은 아래 그림을 참조할 수 있다.

스웜 데이터 저장 모델

스웜은 devp2p 네트워크에서 BZZ URL 방안을 실행하는 노드들의 집합체이며 local HTTP proxy API, RPC-JSON API로 디앱과의 통신, 메시지 전송을 추진한다.[3][1]

특징

작동원리

스웜은 BZZ URL방안을 실행하는 devp2p 네트워크 노드들의 집합체이며 분산 디지털 서비스는 P2P 네트워크의 노드 서로간에 리소스(스토리지 메시지 전송, 결제처리)를 기여하는 방식으로 제공되며 노드들간에 P2P방식으로 정확하게 기여되는 리소스를 통계하여 소비가 서비스보다 적은 경우에 화폐적 보상을가능하게 한다.

local HTTP proxy API로 디앱과 스웜사이의 통신을 추진하고 RPC-JSON API를 이용하여 메시지 전송을 추진하며 자동적으로 이더리움 블록체인과 연결이 되어 도메인 이름 해석을 진행하고 대역폭과 스토리지의 보상을 추진한다. 스웜은 노드들의 콘텐츠 업로딩과 언로딩을 수용하며 동기화 프로세스로 각 노드들의 콘텐츠에 엑세스 가능하다.[1]

활용

종류

IPFS(InterPlanetary File System)

IPFS는 하이퍼 미디어 배포 프로토콜로서 파일과 ID로 처리된다. IPFS는 모든 컴퓨팅 장치를 동일한 파일 시스템으로 연결하려고 만든 분산 파일 시스템이다. 하지만 차이점은 IPFS는 Git 객체를 교환하는 단일 Bittorent swarm과 비슷하다. 쉽게 말해 모든 컴퓨터를 연결해 P2P로 파일을 분산시키는 것이다. 크게 IPFS의 특징은 다음과 같이 정리될 수 있다.

  • HTTP is inefficient and expensive (HTTP는 비효율적이고 비싸다.)

HTTP는 여러 컴퓨터(노드)로부터 동시에 파일 조각들을 가져오는 구조입니다. P2P 통신을 통해 기존 비디오 전송 대역폭 비용을 60%이상 절감 할 수 있습니다.

  • Humanity's history is deleted daily

IPFS는 버전관리 시스템(Git)를 제공하며 데이터 미러링을 위한 백업을 할 수 있습니다.

  • The web's centralization limits opportunity (웹의 중앙 집중 기회를 제한한다.)

IPFS는 개방적이고 비-중앙집중화되어 있다.

  • Our apps are addicted to the backbone. (백본에 중독, 블록체인화 되어있다.)

IPFS는 인터넷 백본 연결 유무와 상관없이 지속적인 가용성을 가능하게 하는 다양하고 탄력적인 네트워크의 생성을 가능하게 한다.

주로 IPFS는 단순 블록체인으로 구성된 것이 아닌, 다양한 백그라운드(Background) 기술을 내포하고 있다.

  • DHT (Distributed Hash Table)는 분산 해시 테이블로 P2P 시스템에 대해 메타데이터를 유지/관리 할 수 있다.
  • Kademlia : 대규모 네트워크를 통한 효율적 조회 , 오버헤드 조정이 낮음, 다양한 공격에 대한 저항성, P2P 에플리케이션에서 광범위한 사용성을 가진다.
  • Coral DSHT : 일부 P2P 파일 시스템은 데이터 블록을 DHT에 직접 저장하지만, 이 부분은 '저장 및 대역폭을 데이터로 낭비'합니다. 따라서 DSHT는 기존 Kademlia에서 3가지 중요한 것을 확장시켰다.
  1. Kdemlia는 ID가 가장 가까운(using XOR-distance) 노드에 해당 키를 저장한다. 하지만 이 부분은 application 데이터의 지역성을 고려하여 저장하지 않는다. 이미 저장된 데이터가 있는 먼 노드 근방에 위치한 또 다른 노드에 또 저장하는 불필요함을 수행한다. 하지만 Coral 은 데이터 블록을 제공할 수 있는 피어에 주소값을 저장한다.
  2. Coral은 특정 키값에 해당하는 값을 가져오는 DHT API를 유연하게 만든다. 가능한 이유는 Coral 사용자는 오직 싱글 피어(single-peer) 이기 때문이다. API 결과값으로 반환되는 값을 살펴보면, Coral은 오직 가장 근방의 노드 값들의 서브셋(subset)들을 배포한다.
  3. Coral은 지역 및 규모에 따라 클러스터라고 하는 별도의 DSHT 계층 구조를 구성할 수 있다. 이를 통해 노드는 먼저 자신의 지역에서 피어를 찾을 수 있다. 즉, 거리가 먼 노드를 찾으려 하지 않고 가까운 데이터를 찾아 "조회하는데 소요되는 시간"을 크게 줄 일 수 있게한다.
  • S/Kademlia DHT : S/Kademlia는 다음과 같은 두 가지 방법의 악의적 공격을 방어한다.
  1. Node id 생성을 보호하고 시빌(Sybill) 공격을 방어하기 위한 스크마를 제공한다. 노드가 PKI 키 쌍을 만들고, 자신의 메시지에 서명하도록 요구하게 한다. 또 다른 스키마로는 시빌 공격 시 POW 작업에 소비되는 비용을 비싸게 만드는 것을 한다.
  2. 노드는 분리 된 경로를 통해 값을 조회하여 정직한 노드가 네트워크의 많은 적들이 존재할 때 서로 연결할 수 있도록 한다. 여기서 S/Kademlia 는 노드의 절반 이상, 대다수의 비율로도 약 85% 성공률을 보여주고 있다.

BitTorrent는 가장 대중적인 P2P 파일 공유 시스템이다. IPFS 설계를 알려주는 BitTorrent 및 해당 생태계의 주요기능은 다음과 같다.

  1. BitTorrent의 데이터 교환 프로토콜은 서로 공헌하는 노드를 보상하고 다른 사람의 리소스만 사용하는 노드를 처벌하는 "준결승 전략(Tit-for-tat strategy)"을 사용한다.

여기서 팃포탯(Tit-for-tat)은 게임이론에서 나온 반복되는 죄수의 딜레마의 강력한 전략이다. 이 전략은 처음에는 협력관계였지만, 그 이후에는 상대의 전략에 반응하는 것을 말한다. 만약 상대가 이전에 협력했다면 협력, 배반했다면 역시 배반할 것 이라는 것이다. 즉 공헌하는 노드는 계속 보상을 받고, 계속 리소스만 사용하는 노드는 보상이 없는 것을 말한다.

  1. BitTorrent의 피어는 파일 조각의 가용성을 추적하여 가장 드문 조각을 우선적으로 전송한다. 이것은 시드(seeds)로부터 부담을 줄여줄 뿐만 아니라, 시드가 아닌 피어끼리도 트레이딩하게 할 수 있다.
  2. BitTorrent의 표전 팃포탯(Tit-for-tat)은 악의적인 대역폭 공유 전략에 취약점이 있다. PropShare는 착취 전략에 더 잘 견디는 다른 피어 대역폭 할당 전략이며 스웜(Swarm)의 성능을 향상시킨다.

IPFS는 DHT, BitTorrent, Git 및 SFS를 포함한, 이전의 P2P 시스템의 성공적인 아이디어를 종합하는 분산 파일 시스템이다. IPFS는 검증된 기법을 단순화하고 진화하며 해당 부분을 합친 단일 응집 시스템으로 연결하는 것이다. IPFS는 응용 프로그램 작성 및 배포를 위한 새로운 플랫폼과 대규모 데이터의 배포 및 버전 관리를 위한 새로운 시스템을 제공한다. IPFS는 웹 자체를 진화시킬 수도 있다. IPFS는 peer-to-peer이다. 어떤 노드도 권한이 없다. IPFS 노드는 로컬 저장소에 IPFS 개체를 저장다. 노드는 서로 연결되어 객체를 전송한다. 이러한 개체는 파일 및 기타 데이터 구조를 나타낸다.



각주

참고자료

같이 보기


  검수요청.png검수요청.png 이 스웜프로토콜 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.