WASM의 Swarm — SWASM

이 블로그 게시물은 원래 Mohammed Zahoor가 작성하고 게시했습니다.

이 기술 블로그에서는 Swarm 코드를 사용하여 웹 브라우저 내에서 작동 할 수있는 기능적 모듈로 전환하는 방법을 살펴 봅니다. 이러한 웹 브라우저 기반의 리소스 라이트 모듈을 만들어 Swarm 네트워크와 통신하는 Web 2.0 방식을 제외하고 대신 Swarm의 기본 방식을 사용할 수 있습니다. 이런 식으로 우리는 진정으로 분산 된 방식으로 웹 사용을 시작할 수 있지만, 복잡한 사용자 경험과 분산 된 기술의 채택률을 높이 지 않아도됩니다.

Swarm을 더 광범위하게 사용할 수있게되었으며 결과적으로 Fair Data Society의 사명 및 가치에 따라 웹을 사용하는 데이터 제로 접근 방식 이 있습니다. 이것이 바로이 블로그 게시물을 간행물에 포함하기로 결정한 이유입니다.

Swarm을 통한 Dapp

현재 Web 3.0 dapp은 이미 사용자 데이터, 사용자 상태 또는 dapp 코드 자체를 Swarm에 저장할 수 있습니다. 여기서 발생하는 문제는 그들 중 많은 사람들이 중앙 Swarm 게이트웨이에 연결하기 위해 여전히 웹 2.0 방법 (예 : http 또는 https 연결)을 사용하고 있다는 것입니다. Ethereum dapp이 Infura를 사용하여 블록 체인에 액세스하는 방식과 유사합니다.

다행히도 dapp이 Swarm을보다 분산 된 방식으로 사용할 수 있도록하는 더 좋은 방법이 있습니다. 이를 달성하는 한 가지 방법은 JavaScript와 같은 웹 클라이언트 친화적 인 언어로 Swarm을 다시 작성하는 것입니다. 또 다른 방법은 WebAssembly (WASM)에서 Swarm 코드를 래핑하여 클라이언트 측에서 사용할 수 있도록하는 것입니다. 이러한 방법은 라스트 마일 웹 2.0 액세스를 제거하고 dapp이 본질적으로 진정으로 분산되도록 돕습니다.

SWASM : 웹 어셈블리의 Swarm

전체 Swarm 코드를 하나의 모 놀리 식 WASM 모듈로 컴파일하면 바이너리 크기가 커지고 프런트 엔드 앱에 지연이 추가되므로 의미가 없습니다. 대신 Swarm을 여러 논리적 구성 요소로 분할하고 각각에 대해 WASM 래핑을 사용할 수 있습니다. 이를 통해 프론트 엔드 디앱이 필요한 모듈을 선택하고 선택할 수 있으므로 코드에서 불필요한 부풀림을 줄일 수 있습니다.

Swarm을 클라이언트 측으로 푸시한다는 것은 또한 스토리지 및 대역폭 요구 사항에 대해 가볍게 생각해야 함을 의미합니다. Swarm 팀은 이미 Swarm Light Client 에 GitHub 트랙을 게시했습니다. 트랙에서 아래에 제안하는 SWASM 모듈로 변경 사항을 구현하는 것이 좋습니다. 다음은 진정으로 분산 된 Swarm 액세스 및 사용을 달성하는 데 필요한 SWASM 모듈 중 일부입니다.

1) Swarm 네트워크 계층 WASM

BZZ는 네트워크에서 청크를 동기화하는 주요 Swarm 프로토콜입니다. Swarm 오버레이 kademlia 또는 Swarm 코드에서 부르는 Hive는 Swarm 네트워크에서 패킷을 라우팅하는 역할을합니다. 이 오버레이는 하위 수준 devp2p 프로토콜에 의존하여 주어진 Swarm 노드의 각 피어에 대해 암호화 된 채널을 유지합니다.

Hive는 Swarm 세계의 진입 점입니다. 이 레이어가 별도의 WASM 모듈로 패키징 된 경우 모든 dapp에서이를 사용하여 모든 Swarm 노드와 기본적으로 통신 할 수 있습니다. 이 모듈의 입력은 아래에 설명 된 Swarm WASM 모듈을 통한 Distributed Pre-Image Archive 또는 Postal Service에서 제공됩니다. 이 모듈의 출력은 기본적으로 dapp 자체에서 Swarm 네트워크로 전송됩니다.

2) 분산 된 사전 이미지 아카이브 (DPA) WASM

DPA는 파일을 더 작은 조각으로 분할하고 암호화하는 등의 기능을 처리합니다. 이 기능은 Swarm에 파일을 업로드해야하는 dapp에만 필요합니다. 전체 Swarm 노드에서 DPA에는이 노드에 가까운 청크를 저장하는 로컬 저장소도 있습니다. 그러나 대부분의 클라이언트 측 기능에 대해 DPA는 Swarm Light 클라이언트 제안에서 권장하는대로 가벼운 스토리지를 구현해야합니다. 이 WASM 모듈은 사용자 데이터 또는 사용자 상태를 Swarm에 저장해야하는 dapp에 포함되어야합니다. dapp이이 WASM 모듈을 사용하기로 결정하면 모듈의 입력이 dapp에서 나온 다음 암호화 된 청크를 첫 번째 Swarm Network Layer WASM 모듈로 보내야합니다.

3) 군단을 통한 우편 서비스 (PSS) WASM

Swarm을 통한 우편 서비스는 Swarm의 통신 모듈입니다. 분산 된 검열 방지 방식이 필요한 Dapp이이 모듈의 주요 사용자입니다. 예 : 채팅 애플리케이션. PSS는 Swarm kademlia 라우팅을 사용하여 메시지 대상을 찾습니다. 암호화 및 키 관리도 담당합니다.

PSS는 dapp에서 입력을 받아 Swarm Network Layer WASM 모듈에 출력을 제공하며, 이는 차례로 kademlia 라우팅을 사용하여 메시지를 보냅니다.

4) WASM 피드

Feeds는 dapp이 Swarm에 가변 데이터를 저장하기위한 Swarm에 대한 간단한 데이터 구조입니다. 피드는 네트워크가 해당 데이터의 최신 해시를 기억할 수있는 간단한 메커니즘입니다. 피드는 dapp에서 입력을 받고 DPA 레이어를 사용하여 Swarm에 세부 정보를 저장합니다. 이 WASM 모듈은 Swarm에 데이터를 저장할 때 일종의 가변성이 필요한 dapp에 유용합니다.

지원 기능

1) 압축

무손실 압축은 현재 Swarm에서 지원하지 않는 기능입니다. 구현 된 경우 위에서 설명한 DPA 모듈의 일부 여야합니다. 하지만 Swarm에서 압축을 구현할 때주의해야 할 몇 가지 사항이 있습니다.

2) 블록

Swarm의 청크 크기는 4kb이며 크기는 고정되어 있습니다. 비디오 스트리밍과 같은 일부 사용 사례의 경우 이것은 매우 좋은 속성입니다. 그러나 많은 양의 데이터를 처리하는 많은 애플리케이션 (예 : 분석, 빅 데이터 처리, ETL…)의 경우 수백만 개의 청크를 추적하는 것은 오버 헤드입니다.

블록은 청크에 대해 추상적으로 생각하는 방법입니다. 여러 청크가 블록을 형성합니다. 블록의 크기는 단일 파일에 대해 고정되며 Swarm에서 파일을 생성하는 동안 결정됩니다. 청크와 달리 블록 메타 데이터는 애플리케이션에 노출됩니다. 애플리케이션은 블록 단위로 로직을 수행 할 수 있습니다.

파일 메타 데이터에는 암호화 키, 압축 체계 등과 같은 블록에 대한 세부 정보가 포함됩니다.

모두를위한 더 나은 비공개 웹 만들기

이 네 가지 모듈의 개발은 분산 기술을 채택하기위한 중요한 단계이며 전체 Swarm 생태계에 도움이 될 것입니다. 이 모듈은 웹 브라우저와 같은 확립 된 인터페이스를 통해 Swarm 네트워크와 통신 할 수있는 직접적이고 분산 된 방법을 dapp에 제공하여 Web 2.0과 Web 3.0 사이의 다리를 만듭니다.

이것이 바로 Datafund 팀이 이러한 모듈의 개발을 공정 데이터 사회에 기여하기로 결정한 이유이며 모듈도 로드맵에 포함되었습니다. 우리는이 문제를 해결하여 모두를위한 더 나은 비공개 웹을 만들기를 기대합니다.

토론 참여 :

공정한 데이터 사회 폭동

공정한 데이터 사회 Twitter

공정한 데이터 사회 GitHub

데이터 펀드 텔레 그램

Datafund Twitter