스웜프로토콜
스웜프로토콜(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]
각주
- ↑ 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
참고자료
- 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
같이 보기