스웜프로토콜
스웜프로토콜(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]
특징
Swarm은 분산 스토리지 플랫폼 및 컨텐츠 배포 서비스로 이더리움 web3 stack으로 basic layer 서비스이다. Swarm은 P2P 스토리지를 사용하는 내장 인센티브 시스템으로 인해 DDOS 공격 방지 및 제로 다운 타임, 검열에 대한 저항성과 자립성을 가지고 있다. 주로 이더리움의 공공 기록을 분산시키는데 있다. 특히 Dapp 코드와 데이터는 물론 블록체인 데이터를 저장하고 배포하는 것이 중요하다. 경제적 관점에서 볼 때, 참가자들은 모든 참여자에게 앞서 언급 한 서비스를 제공하기 위해 스토리지 및 대역폭 리소스를 효율적으로 풀링 할 수 있다. 최종 사용자의 관점에서, Swarm은 업로드가 특정 서버가 아닌 것을 제외하면 WWW와 다르지 않다. 목표는 피어 투 피어 (peer to peer) 계정을 사용하는 내장 된 인센티브 시스템으로 인해 DDOS 방지, 제로 다운 타임, 내결함성 및 검열에 대한 저항성과 자립성을 갖춘 피어 투 피어 저장소 및 서비스 솔루션이다다. 지불을위한 거래 자원을 허용한다. Swarm은 Ethereum의 dev p2p 다중 프로토콜 네트워크 계층 및 도메인 이름 확인, 서비스 지불 및 콘텐츠 가용성 보험을 위한 이더리움 블록체인과 깊이 통합되도록 설계되었다.[4]
‘분산 저장’은 모든 정보가 서버에 저장되는 기존의 중앙화된 저장 방식과 구분되어 사용되는 용어이다. 인센티브 구조를 설계하여 참여 노드들로 하여금 네트워크 상에서 저장(Storage) 혹은 검색(Retrieval) 역할을 하도록 장려한다 : Filecoin 상에서는 저장 및 검색 시장에서 저장 마이너와 검색 마이너가 해당 역할 수행, SWARM 상에서는 Bandwidth Incentives, Storage Incentives에 따라 참여 노드들이 역할 수행(특별한 명칭 부재)한다. 용량이 큰 파일을 여러 블록으로 쪼개서 저장하는 방식을 사용한다 : 블록으로 쪼개어 저장하므로 동시에 여러 블록을 받을 수 있다. Bittorrent 방식의 파일 교환이 가능하다는 의미이다. 어떤 노드가 용량 큰 파일을 받고자 할 때, 해당 파일을 보유한 여러 노드가 동시에 부분 별로 나누어 보내줄 수 있다- 파일이 여러 블록으로 쪼개져 있기 때문이다. 또한 content-addressing을 통해 파일의 무결성을 확인할 수 있다. 모두 URL 형식이고 DNS 솔루션을 갖고 있다. 스웜(SWARM)은 이더리움네임서비스(ENS; Ethereum Name Service)를 사용한다. 스웜은 파일이 투명하고 효율적으로 저장되도록 구현한다는 목표를 가지고 있다.
SWAP(SWarm Accounting Protocol)은 피어(Peer) 간의 서비스 제공 내역을 기록하고 서비스에 대하여 보상하는 프로토콜이다다. SWAP에 따라서 노드들은 장기 저장 계약을 체결한다. SWARM 상에서 저장소를 대여하기 위해서는 우선 SWARM에 등록(registration)하고, 의무적으로 일정량의 Ether를 디파짓으로 걸어두어야 한다. 즉, 내가 만약 저장 의무를 소홀히 하였을 경우, 손해를 본 노드에게 얼마까지 보상할 수 있음을 알리는 것이다. 보험과 같은 개념이라고 생각하면 될 것이다. 디파짓에 남아있는 잔고는 마치 해당 서비스 제공자의 평판(reputation)으로 역할한다. 누군가 저장 의뢰를 하면, 저장 서비스 제공자는 서명된 영수증(signed receipt, 보관증)을 주는데, 이는 추후에 SWEAR contract 상에서 보험액을 수령할 수 있는 키 역할을 한다. SWINDLE(Secured With INsurance Deposit Litigation and Escrow) 저장 서비스 제공자가 제대로 저장을 하지 않고 있거나, 해당 파일이 SWARM 상에서 발견되지 않을 때 challenge를 통해 제보할 수 있다. SWINDLE로 거래를 전송하는 형식으로 이루어지며, 보관증을 갖고 있다면 누구나 할 수 있다. 만약 저장 서비스 제공자가 반증(Refutation)하지 못하면 상응하는 처벌을 받게 된다. SWARM은 확실히 저장 서비스 제공자가 의무를 해태했을 때, 명확하게 SWEAR와 SWINDLE의 이중 구제 구조를 갖추고 있다.[5]
작동원리
스웜은 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의 특징은 다음과 같이 정리될 수 있다. 주로 IPFS는 단순 블록체인으로 구성된 것이 아닌, 다양한 백그라운드(Background) 기술을 내포하고 있다.
- DHT (Distributed Hash Table)는 분산 해시 테이블로 P2P 시스템에 대해 메타데이터를 유지/관리 할 수 있다.
- Kademlia : 대규모 네트워크를 통한 효율적 조회 , 오버헤드 조정이 낮음, 다양한 공격에 대한 저항성, P2P 에플리케이션에서 광범위한 사용성을 가진다.
- Coral DSHT : 일부 P2P 파일 시스템은 데이터 블록을 DHT에 직접 저장하지만, 이 부분은 '저장 및 대역폭을 데이터로 낭비'합니다. 따라서 DSHT는 기존 Kademlia에서 3가지 중요한 것을 확장시켰다.
- Kdemlia는 ID가 가장 가까운(using XOR-distance) 노드에 해당 키를 저장한다. 하지만 이 부분은 application 데이터의 지역성을 고려하여 저장하지 않는다. 이미 저장된 데이터가 있는 먼 노드 근방에 위치한 또 다른 노드에 또 저장하는 불필요함을 수행한다. 하지만 Coral 은 데이터 블록을 제공할 수 있는 피어에 주소값을 저장한다.
- Coral은 특정 키값에 해당하는 값을 가져오는 DHT API를 유연하게 만든다. 가능한 이유는 Coral 사용자는 오직 싱글 피어(single-peer) 이기 때문이다. API 결과값으로 반환되는 값을 살펴보면, Coral은 오직 가장 근방의 노드 값들의 서브셋(subset)들을 배포한다.
- Coral은 지역 및 규모에 따라 클러스터라고 하는 별도의 DSHT 계층 구조를 구성할 수 있다. 이를 통해 노드는 먼저 자신의 지역에서 피어를 찾을 수 있다. 즉, 거리가 먼 노드를 찾으려 하지 않고 가까운 데이터를 찾아 "조회하는데 소요되는 시간"을 크게 줄 일 수 있게한다.
- S/Kademlia DHT : S/Kademlia는 다음과 같은 두 가지 방법의 악의적 공격을 방어한다.
- Node id 생성을 보호하고 시빌(Sybill) 공격을 방어하기 위한 스크마를 제공한다. 노드가 PKI 키 쌍을 만들고, 자신의 메시지에 서명하도록 요구하게 한다. 또 다른 스키마로는 시빌 공격 시 POW 작업에 소비되는 비용을 비싸게 만드는 것을 한다.
- 노드는 분리 된 경로를 통해 값을 조회하여 정직한 노드가 네트워크의 많은 적들이 존재할 때 서로 연결할 수 있도록 한다. 여기서 S/Kademlia 는 노드의 절반 이상, 대다수의 비율로도 약 85% 성공률을 보여주고 있다.
BitTorrent는 가장 대중적인 P2P 파일 공유 시스템이다. IPFS 설계를 알려주는 BitTorrent 및 해당 생태계의 주요기능은 다음과 같다.
- BitTorrent의 데이터 교환 프로토콜은 서로 공헌하는 노드를 보상하고 다른 사람의 리소스만 사용하는 노드를 처벌하는 "준결승 전략(Tit-for-tat strategy)"을 사용한다.
여기서 팃포탯(Tit-for-tat)은 게임이론에서 나온 반복되는 죄수의 딜레마의 강력한 전략이다. 이 전략은 처음에는 협력관계였지만, 그 이후에는 상대의 전략에 반응하는 것을 말한다. 만약 상대가 이전에 협력했다면 협력, 배반했다면 역시 배반할 것 이라는 것이다. 즉 공헌하는 노드는 계속 보상을 받고, 계속 리소스만 사용하는 노드는 보상이 없는 것을 말한다.
- BitTorrent의 피어는 파일 조각의 가용성을 추적하여 가장 드문 조각을 우선적으로 전송한다. 이것은 시드(seeds)로부터 부담을 줄여줄 뿐만 아니라, 시드가 아닌 피어끼리도 트레이딩하게 할 수 있다.
- BitTorrent의 표전 팃포탯(Tit-for-tat)은 악의적인 대역폭 공유 전략에 취약점이 있다. PropShare는 착취 전략에 더 잘 견디는 다른 피어 대역폭 할당 전략이며 스웜(Swarm)의 성능을 향상시킨다.
IPFS는 DHT, BitTorrent, Git 및 SFS를 포함한, 이전의 P2P 시스템의 성공적인 아이디어를 종합하는 분산 파일 시스템이다. IPFS는 검증된 기법을 단순화하고 진화하며 해당 부분을 합친 단일 응집 시스템으로 연결하는 것이다. IPFS는 응용 프로그램 작성 및 배포를 위한 새로운 플랫폼과 대규모 데이터의 배포 및 버전 관리를 위한 새로운 시스템을 제공한다. IPFS는 웹 자체를 진화시킬 수도 있다. IPFS는 peer-to-peer이다. 어떤 노드도 권한이 없다. IPFS 노드는 로컬 저장소에 IPFS 개체를 저장다. 노드는 서로 연결되어 객체를 전송한다. 이러한 개체는 파일 및 기타 데이터 구조를 나타낸다.[4]
각주
- ↑ 1.0 1.1 1.2 1.3 "1. Introduction — Swarm 0.4 documentation", Swarm
- ↑ "storage - What is Swarm and what is it used for?", Ethereum Stack Exchange
- ↑ Stefan Beyer, "Ethereum Swarm: A Detailed Guide", Mycryptopedia, 2019-03-29
- ↑ 4.0 4.1 〈[IPFS VS SWARM 블록체인 스토리지 분석]〉, 《코인포루》,2018-05-30
- ↑ 〈36. IPFS〉, 《스티밋》
참고자료
- Ian Allison, "Ethereum's Viktor Trón talks about Swarm and the skeleton of Web 3.0", IBT, 2016-05-18
- Stefan Beyer, "Ethereum Swarm: A Detailed Guide", Mycryptopedia, 2019-03-29
- "1. Introduction — Swarm 0.4 documentation", Swarm documentation
- 〈[IPFS VS SWARM 블록체인 스토리지 분석]〉, 《코인포루》,2018-05-30
- 〈36. IPFS〉, 《스티밋》
같이 보기