Swarm에서 발표한 최신 공식 백서를 살펴보세요.
보조 제목
1. 소개
세계 컴퓨터세계 컴퓨터”가 현실이 되면 이 “월드 컴퓨터”는 탈중앙화 애플리케이션을 위한 운영 체제 및 배포 환경의 역할을 할 것입니다.
Swarm은 중단 없는 서비스를 제공하고 네트워크 중단 또는 표적 DoS 공격에 보다 효과적으로 저항할 수 있습니다. Swarm은 무허가 게시 플랫폼으로서 정보의 자유를 효과적으로 촉진합니다. Swarm은 다음과 같은 고유한 개인 정보 보호 기능으로 유명합니다.익명으로 찾아보기、거부 가능한 스토리지、그리고그리고메타데이터가 유출되지 않는 파일 형식등 네트워크 보안에 대한 수요 증가에 대응합니다.
Swarm에 내장된 인센티브는 경제적으로 자급자족할 수 있도록 대역폭 및 스토리지 리소스 할당을 최적화하도록 설계되었습니다. Swarm 노드는 각 노드와 관련하여 각각의 대역폭 기여도를 추적하고 BZZ는 불평등한 소비로 인한 추가 부채를 해결하는 데 사용됩니다. Swarm의 퍼블리셔는 BZZ를 사용하여 Swarm에 데이터를 쓸 수 있는 권한을 구입하고 일부 장기 저장에 대한 임대료를 선불해야 합니다.
Swarm의 모듈식 설계는 명확하게 분리 가능한층구성(그림 1 참조). 기술적으로 말하면,그리고그리고레이어 3 "API를 통한 높은 수준의 데이터 액세스"보조 제목

2 DISC: 블록의 분산 불변 저장소
DISC (Distributed Immutable Storage of Chunks)Swarm의 기본 스토리지 모델입니다. 데이터를 저장하고 제공하는 노드로 구성되며, 이러한 노드 간의 협업에서 각 노드가 운영자의 이익을 극대화하는 전략을 추구한다고 가정하면 네트워크 전체의 행동은 다음과 같은 특징을 보일 것입니다.
• 개인 정보 보호 및 무허가 업로드 및 다운로드
• 일단 게시된 콘텐츠에 대한 액세스를 차단하거나 변경하기 어렵게 만드는 강력한 방어
• 수요 증가에 따른 자동 확장
• 무결성 보호 콘텐츠
• 더 이상 저장되지 않는 콘텐츠는 결국 잊혀집니다.
여분의 저장 공간과 대역폭을 가진 사람은 누구나 DISC에 노드 운영자로 참여하고 그에 따른 보상을 받을 수 있습니다. 운영자가 Swarm 클라이언트 소프트웨어를 설치하고 실행하면 새 노드가 생성되고 Swarm 네트워크의 일부가 되어 전 세계 하드 드라이브의 작은 조각인 Swarm을 관리합니다.
다음으로 DISC를 추가로 정의하고 위의 속성을 생성하는 이유를 설명합니다.
2.1 연결, 토폴로지 및 라우팅
DISC의 초기 책임은 모든 노드가 서로 간에 메시지를 보낼 수 있도록 노드 네트워크를 구축하고 유지하는 것입니다. 이 메시지 교환은 p2p 네트워크 프로토콜(libp2p)을 사용하는 노드 간에 존재하는 지속적이고 안전한 통신 채널을 통해 이루어집니다. Swarm은 노드가 Kademlia 연결을 설정하기를 기대합니다. 다른 노드의 특정 세트에 연결될 때 노드가 주소를 보내기로 한 로컬 결정은 결국 메시지 전송으로 이어져 전역적으로 최적의 경로를 찾습니다.
Kademlia는 각 노드에 네트워크 주소와 다른 Swarm 주소가 할당된다고 가정합니다. 접두사 비트 값에서 두 Swarm 주소에 공통된 값을 계산하여 근접성을 정의할 수 있습니다. 서로 가장 가까운 노드는 완전히 연결된 노드를 형성합니다.이웃. 또한 각 노드는 각 개별 근접 클래스의 여러 피어 노드에 연결됩니다(그림 2 참조).

(참고 1: Libp2p는 사용자가 분산형 P2P 애플리케이션을 개발하기 위한 네트워크 프레임워크입니다.)
(참고 2: Kademlia는 분산형 P2P 컴퓨터 네트워크를 구축하기 위해 Petar Maymounkov와 David Mazières가 설계한 P2P 오버레이 네트워크 전송 프로토콜입니다. XOR 연산을 기반으로 하는 P2P 정보 시스템입니다. 통신하고 정보를 교환하는 노드입니다.)
결과 토폴로지는 릴레이가 메시지를 각 메시지 전환과 함께 의도한 대상에 적어도 한 단계 더 가깝게 이동하도록 보장합니다(그림 3 참조).이 기술을 사용하면 두 노드가 직접 연결을 유지하지 않는 경우에도 두 노드 간에 메시지를 라우팅할 수 있습니다. 메시지를 전달하는 데 필요한 홉 수의 상한은 총 노드 수의 로그이므로 매우 큰 네트워크에서도 두 노드가 항상 서로 연결될 수 있습니다.

2.2 블록 및 스토리지
Swarm의 표준 저장 장치는차단하다. 조각최대 4킬로바이트의 데이터로 구성, 주소가 첨부되어 있습니다. 블록의 주소와 노드의 주소는 같은 주소 공간에서 오기 때문에 근접성을 계산할 수 있습니다. Swarm의 저장 체계에 따르면 각 블록은 블록 자체의 주소에 가까운 주소에 있는 노드에 의해 저장됩니다.
데이터 프라이버시를 용이하게 하기 위해 블록은 4KB로 채워진 후 암호화될 수 있으므로 키가 없는 다른 임의 데이터와 구별할 수 없습니다. 암호화되지 않은 블록의 경우에도 노드 운영자는 각 블록의 내용이 무엇인지 쉽게 확인할 수 없습니다. Swarm 노드는 저장하고 암호화할 데이터 블록을 스스로 선택할 수 없기 때문에 출처가 모호하고 메타데이터를 유출할 수 없기 때문에 저장 내용과 관련된 책임으로부터 효과적으로 보호할 수 있습니다.
Swarm에 블록을 삽입하기 위해 노드가 통과합니다.동기식 푸시 프로토콜(푸시 동기화 프로토콜)블록은 자신이 속한 이웃에 도달할 때까지 전달됩니다. 그런 다음 블록의 저장 확인이 동일한 경로를 따라 다시 전송됩니다. 블록을 검색하려면 검색 프로토콜을 사용하여 블록 주소가 있는 요청을 관련 이웃으로 라우팅하기만 하면 됩니다. 도중에 노드에 해당 블록이 로컬로 있으면 응답으로 다시 보냅니다.

노드 사용풀 동기화 프로토콜블록 스토리지를 지속적으로 동기화합니다. 이렇게 하면 각 이웃이 자신의 이웃에 속한 모든 블록을 중복 저장합니다. 이 중복성은 데이터 전송의 탄력성을 증가시켜 특정 이웃의 일부 노드에 도달할 수 없는 경우에도 블록 가용성을 유지합니다. 동기화 프로토콜은 또한 노드가 오프라인이 되고 새 노드가 네트워크에 가입할 때 이웃의 저장된 콘텐츠가 일관성을 유지하도록 합니다.
2.3 전달, 개인 정보 보호 및 캐싱
Swarm에서 메시지는 재귀적으로 대상에 더 가깝게 전달한 다음 동일한 경로를 따라 응답을 다시 전달하여 라우팅됩니다. 이 라우팅 알고리즘에는 두 가지 중요한 속성이 있습니다.
• 요청하는 사람이 모호합니다.
• 수요 증가에 따라 자동으로 확장합니다.
요청을 시작한 노드가 보낸 메시지는 모든 수준에서 요청을 전달만 하는 노드가 보낸 메시지와 동일합니다. 이러한 모호성으로 인해 요청을 보낸 사람은 자신의 개인 정보가 침해되지 않도록 하여 무허가 콘텐츠 게시 및 비공개 브라우징을 용이하게 할 수 있습니다.
라우팅 검색 요청에 참여하는 노드는 자신이 전달한 블록을 저장하도록 선택할 수 있으므로 자동 확장 가능한 배포 시스템이 활성화됩니다. 이를 위해 아래에서 논의되는 대역폭 인센티브 메커니즘추측성 캐싱(기회적 캐싱)경제적 인센티브를 제공합니다.
2.4 Swarm 회계 프로토콜
Swarm 회계 프로토콜(Swarm Accounting Protocol, SWAP)네트워크를 무분별한 대역폭 사용으로부터 보호하면서 노드 운영자가 메시지 라우팅에 협조하도록 합니다.
노드는 요청과 응답을 전달할 때 각 노드에 대한 상대적인 대역폭 소비를 추적합니다. 특정 한도 내에서 노드 간에 서비스가 교환됩니다. 그러나 한도에 도달하면 채무자는 시간이 지남에 따라 부채가 상각될 때까지 기다리거나 BZZ로 블록체인에서 현금화할 수 있는 수표를 보내 지불할 수 있습니다(그림 5 참조).

이 프로토콜은 소량의 콘텐츠를 다운로드하거나 업로드하는 사람들이 Swarm을 무료로 사용할 수 있도록 하고, 기다릴 의향이 있는 사람들은 충분한 양의 콘텐츠가 나올 때까지 각 노드를 상호 서비스합니다.신용 거래마지막으로 Swarm도 무료로 사용할 수 있습니다. 동시에 더 많은 양의 콘텐츠를 업로드하거나 다운로드할 때 결제를 원하는 사람들에게 더 빠른 경험을 제공합니다.
각 노드가 메시지를 전달하도록 도울 때 각 노드에 대한 경제적 인센티브가 있습니다. 목적지에 더 가까운 노드로 요청을 성공적으로 라우팅하는 각 노드는 요청이 성공적으로 전달될 때 BZZ를 얻을 수 있기 때문입니다. 노드가 데이터 자체를 저장하지 않는 경우 적은 비용으로 더 가까운 노드에서 데이터 블록을 요청할 수 있습니다. 이러한 트랜잭션을 통해 노드는 요청을 처리할 때 약간의 이익을 얻을 수 있습니다. 이는 노드가 블록을 캐싱할 인센티브가 있음을 의미합니다.더 가까운 노드에서 블록을 한 번 구매한 후 동일한 블록에 대한 후속 요청은 순수한 이익을 얻습니다.
2.5 용량 부족 및 가비지 수집
새 콘텐츠가 Swarm에 추가되면 조만간 각 노드의 제한된 저장 용량이 소진될 것입니다. 이 시점에서 노드는 새 블록을 만들기 위해 어떤 블록을 삭제해야 하는지 결정하는 전략이 필요합니다.
각 Swarm 노드의 로컬 저장소에는 ""그리고""그리고"은닉처”。
"예비"는 노드의 이웃에 속하는 블록을 저장하는 전용 고정 크기 저장 공간입니다. 블록이 "예비"에 보관되는지 여부는 "우표". 블록체인 계약으로 BZZ를 통한 구매 가능"우송료 배치". "배치"의 소유자는 제한된 수의 소인을 발행할 권리가 있습니다. 이러한 소인은 일종의 신뢰 토큰 역할을 하여 사용자에게 Swarm에 무언가를 저장하는 특정 가치를 나타냅니다. 크기를 사용하여 이 값은 "reserve"의 어떤 블록을 먼저 삭제할지 결정하여 예금자의 노드가 DISC의 효용을 극대화할 수 있도록 합니다.(그림 6 참조) 각 스탬프의 값은 시간이 지남에 따라 감소합니다. "배치"의 잔액에서 주기적으로 차감되며, 소인 값이 부족하면 해당 블록이 "예약"에서 제거되고 "캐시"에 배치됩니다.
"캐시"의 역할은 "배치" 값이 부족하거나 노드 주소에서 너무 멀리 떨어져 있어 "예비"로 보호되지 않는 블록을 보유하는 것입니다. 용량에 도달하면 주기적으로 캐시를 정리하고 가장 오랫동안 요청하지 않은 블록을 삭제합니다. 블록의 인기는 요청이 마지막으로 수신된 시간으로 예측할 수 있으며 SWAP 수익이 더 많은 블록이 먼저 예약됩니다. 예측 캐싱과 결합하면 이쓰레기 수집이 전략은 대역폭 인센티브에서 운영자의 이익을 극대화하고 네트워크 수준에서 인기 콘텐츠의 자동 확장을 실현합니다.

2.6 블록 유형
위에서 우리는 블록을 DISC의 표준 데이터 단위로 정의했습니다. Swarm에는 두 가지 기본 블록 유형이 있습니다.그리고그리고단일 소유자 청크。
콘텐츠 주소 지정 가능 블록의 주소는 다음을 기반으로 합니다.해시 다이제스트(그림 7 참조). 블록 데이터의 무결성은 해시를 블록 주소로 사용하여 검증할 수 있습니다. Swarm은 다음을 사용합니다.머클 트리~의BMT(이진 머클 트리) 해시연산.

보조 제목

Swarm API의 3가지 기능
블록 외에도 Swarm은 파일, 다양한 메타데이터가 포함된 파일의 계층적 컬렉션, 심지어 노드 간 메시징과 같은 상위 수준 개념을 구현하기 위한 API도 제공합니다. 이러한 API는 웹에서 이미 사용 중인 API를 미러링하려고 시도합니다. 더 많은 참신한 아이디어와 데이터 구조가 이러한 상위 계층 위에 그려질 수 있으므로 DISC가 제공하는 개인 정보 보호 및 분산화의 핵심 서비스로부터 이익을 얻고자 하는 모든 사람에게 다양한 가능성을 열어줍니다.
3.1 파일 및 컬렉션
단일 블록에서 허용되는 4KB보다 큰 데이터는 여러 블록으로 분할됩니다. 동종 블록 그룹은 Swarm에 의해 정의됩니다.해시 트리(해시 트리)이 해시 트리는 업로드 프로세스 중에 파일이 청크로 분할되는 방식을 인코딩합니다. 이 트리는 다음 세트로 구성됩니다.리프 노드 청크데이터 자체를 포함하는 컴포지션은 중간 블록의 하나 또는 여러 레이어에 의해 참조되며 각 레이어에는 해당 하위 블록에 대한 참조가 포함됩니다(그림 9 참조).
전체 파일의 콘텐츠 주소는 루트 블록의 해시 다이제스트, 즉 전체 파일에 걸친 해시 트리에 의해 결정됩니다.머클 루트. 이런 식으로 파일의 주소는체크섬(체크섬), 콘텐츠의 무결성을 확인할 수 있습니다. 파일을 블록의 균형 잡힌 Merkle 트리로 나타내면 파일에 대한 효율적인 임의 액세스가 제공되어 효율적인 범위 쿼리가 생성됩니다.
스웜은 "매니페스트" 컬렉션을 나타냅니다. 매니페스트는 문자열 참조의 일반 맵을 인코딩하여 다음을 허용합니다.디렉토리 트리、또는또는라우팅 테이블모델 빌딩을 합니다. 이를 통해 Swarm은 파일 시스템을 구현하고 데이터베이스 역할을 하며 웹 사이트 및 dapp에 대한 가상 호스팅을 제공할 수도 있습니다.
URL의 호스트 부분을 매니페스트에 대한 참조로 해석하면 매니페스트는 URL 기반 주소 지정을 제공하고 URL 경로는 매니페스트가 나타내는 맵에서 조회를 위한 키로 사용되며 파일 참조.

매니페스트는 소형 Merkle trie 형식으로 나타내는 매핑을 인코딩하고 블록은 trie의 노드를 직렬화합니다(그림 10 참조). 경로를 찾을 때 통과하는 가지의 노드를 따라 해당 블록만 검색하면 됩니다. 이렇게 하면 컬렉션 크기에 대수적인 대기 시간 및 대역폭으로 파일/레코드를 효율적으로 조회할 수 있습니다.

파일의 해시 트리 중간 블록에 있는 자식 노드 참조와 컬렉션의 목록 접두사 트리 노드는 위치에서 BMT 해시 세그먼트와 정렬됩니다. 결과적으로 Swarm은 특정 데이터 조각이 주어진 URL에서 지정된 오프셋에 있는 파일의 일부라는 간결한 증명을 지원하며, 이는 공개적으로 입증 가능한 데이터베이스 인덱싱 및 무신뢰 집계의 기반입니다.
3.2 업데이트 추적: 피드 및 도메인 확인
피드는 허용하는 방법입니다.가변 자원 표시(가변 자원의 인상)에 대한 단일 소유자 블록 예. 피드는 변경 가능한 리소스의 버전이 지정된 개정, 주제에 대한 순차적 업데이트 또는 통신 채널에서 당사자가 게시한 연속적인 메시지를 나타낼 수 있습니다.
피드는 주제 및 색인에서 파생된 단일 소유자 블록 식별자를 정의하여 작동합니다. 게시자와 콘텐츠 소비자가 색인을 업데이트하는 방법과 시기에 대해 동의하면 해당 피드에 대한 업데이트에 대한 특정 참조를 구성하고 찾을 수 있습니다.
DNS가 도메인을 호스트 서버의 IP 주소로 확인하는 방법과 유사하게 Swarm은 다음을 사용합니다.Ethereum 도메인 이름 확인 서비스 ENS(Ehereum-Name Service)- 사람이 읽을 수 있는 도메인 이름(예: Swarm.eth)을 지원하기 위해 참조로 해결되는 블록체인의 스마트 계약 세트.
ENS에 등록된 참조는 웹 응용 프로그램 또는 해당 웹 사이트가 업데이트로 인해 새로운 Swarm 참조를 얻을 때마다 업데이트될 수 있습니다. 또는 도메인 이름이 피드를 참조할 때 사용자는 사람이 읽을 수 있는 도메인 이름의 이점을 누릴 수 있는 동시에 블록체인과 상호 작용하지 않고도 콘텐츠를 업데이트할 수 있으며 변경할 때마다 관련 거래 비용을 지불할 수 있습니다.
3.3 메시지 전달
PSS(Swarm의 우편 서비스)는 Swarm의 직접 노드 간 메시징 프로토콜입니다. 의도된 수신자의 메시지를 암호화하고 콘텐츠 주소 지정 가능 블록의 제목으로 래핑하여 이를 수행합니다. 콘텐츠 주소가 수신자의 이웃에 속하는 방식으로 블록이 생성되기 때문에 전송은 자연스럽게 동기식 푸시 프로토콜에 의해 처리됩니다.
또한 임의로 암호화된 블록과 메시지를 구분할 수 없기 때문에 **"트로이 목마" 블록**이라고도 합니다. PSS 메시지를 받을 것으로 예상되는 노드는 이웃에 도착하는 모든 블록을 해독하고 열기를 시도합니다. 합법적인 수신자에게 트로이 목마 블록을 성공적으로 해독하고 압축을 푼 후 클라이언트 노드는 PSS API를 사용하여 주제를 구독하는 애플리케이션에 메시지를 일반 텍스트로 보낼 수 있습니다.
PSS는 또한 블록이 지속되고 결국 해당 노드가 나중에 온라인 상태가 되더라도 모든 인접 노드와 동기화되므로 비동기 전달을 제공합니다.
PSS를 사용하면 사용자가 지금까지 알려지지 않은 개인으로부터 메시지를 받을 수 있으므로 익명 메시지를 공개 개인(예: 레지스트리)에게 보내거나 연락처에 대한 스트림을 시작하기 위해 피드를 통해 보안 통신 채널을 설정하는 데 이상적인 통신 기본 요소입니다. PSS는 수신자의 어떠한 조치(예: 폴링)도 필요하지 않으므로 푸시 알림에 대해 권장되는 기본 요소가 될 수 있습니다.
3.4 고정 및 복원
DISC는 거의 액세스하지 않는 무료 콘텐츠를 결국 잊게 됩니다. 블록에 "고정"이 작업을 통해 노드는 특정 콘텐츠를 로컬에 보관할 수 있습니다. 동시에 이"고정된 콘텐츠를 로컬에 저장하는 사람(pinner)”는 모든 사용자의 이익을 위해 콘텐츠의 수동적 또는 능동적 복원에 참여할 수 있습니다.
소극적 회복복구 프로토콜은 검색에 실패할 때 PSS를 사용하여 복구 요청을 전송하여 누락된 블록을 피너에게 알리는 데 사용됩니다. 피너는 복구 요청을 수신하고 다운로더가 재시도할 때 찾을 수 있도록 누락된 청크를 다시 업로드하여 응답합니다. 또한 이 복구 기능을 사용하면 일부 기존 파일 공유 솔루션(BitTorrent, IPFS)의 기본 작동 모드와 유사하게 게시자 노드에서 직접 원본 콘텐츠를 시드할 수 있습니다.
반대로 Swarm은 다음을 제공합니다.적극적인 회복보조 제목
4 결론
Swarm은 피어 투 피어 네트워크이며 모든 노드가 공동으로 분산형 스토리지 및 통신 서비스를 제공합니다. 무허가 및 비공개 Swarm은 무결성 보호, 검열 저항 및 공격 저항으로 보안을 유지하면서 언론의 자유, 데이터 주권 및 웹의 공개 시장의 요구를 해결합니다. 이 기사에서는 Bee1.0의 초기 메인넷 출시에 포함된 기능을 소개합니다.
이것은 이정표이며 여정은 이제 막 시작되었습니다. 디지털 자유를 강화한다는 사명에 Swarm과 함께하십시오.


