IPFS 기술 시리즈의 IPFS 모듈 분석

머리말

이 기사에서는 IPFS의 세 가지 주요 구성 요소인 Multiformat(자체 설명 형식 프로토콜 라이브러리), libp2p(P2P 네트워크 프로토콜 모듈 라이브러리) 및 IPLD(데이터 구조 모델 라이브러리)를 주로 소개합니다. 독립

1. 멀티포맷

Multiformat은 IPFS의 자체 설명 형식 프로토콜 구성 요소로 다양한 프로그래밍 언어 또는 데이터 유형을 세부적으로 구분하기 어려운 문제를 해결하는 데 사용됩니다. 채택하는 방식은 데이터에 자체 설명 필드를 추가하고 필드에서 데이터의 속성만 판단하면 됩니다.
Multi-Format은 현재 다음 다섯 가지 프로토콜을 지원합니다.

1.멀티해시

다중 해시는 다음과 같은 특징이 있습니다.
1. 다중 해시는 사용자에게 메시지를 표시합니다. 예를 들어 일부 해시 값은 더 이상 안전하지 않을 수 있으며 해독될 위험이 있습니다.
2. 해쉬알고리즘의 업데이트를 쉽게 하고, 해쉬알고리즘의 종류와 해쉬값의 길이를 표준화하기 쉽게 한다.
3. 대부분의 도구는 더 이상 해시를 확인할 필요가 없습니다.
Multi-Hash 형식
Multi-Hash의 형식은 유형, 길이 및 해시 값의 세 가지 유형의 정보를 저장합니다. 명명 형식은 (유형-길이-값)입니다.

<Multi-Hash> ::= <type-哈希类型><长度><哈希值>

Multi-Hash의 형식에서 볼 수 있듯이 우리의 사용에 많은 이점을 제공합니다.
1. 해시 값을 얻으십시오. 이 값의 처음 두 바이트를 통해 암호화 방법을 판단할 수 있습니다.
2. 향후 시스템의 암호알고리즘 업데이트에 대한 편의성을 제공합니다.
3. 여분의 공간을 너무 많이 차지하지 않습니다.
Multi-Hash는 100개 이상의 일반적인 해시 유형을 기록하며 이러한 해시 알고리즘의 이름과 16진수는 테이블을 통해 쿼리할 수 있습니다.

2.멀티베이스

  Multi-Base는 데이터를 저장하고 데이터가 어떻게 인코딩되는지 설명하는 데 사용되는 자기 설명적 기본 인코딩 프로토콜입니다.입력 및 출력의 인코딩 유형을 자유롭게 선택할 수 있으며 다른 프로그램도 이 값을 통해 인코딩 유형을 얻을 수 있습니다. .
Multi-Base의 포맷은 인코딩 코드 타입과 인코딩 데이터 값의 2가지 정보를 저장하는데 여기서는 길이를 정의할 필요가 없고 1바이트만 있으면 다양한 타입을 구분할 수 있다.

<Multi-Base> ::= <type编码类型><编码内容>

Multi-Base의 장점은 사용자가 다양한 인코딩 방식을 빠르게 구분할 수 있고, Multi-Base를 호출하여 다양한 인코딩 방식을 전환할 수 있다는 것입니다.
Multi-Base에는 고유한 매핑된 조회 테이블도 있습니다. 아래 그림과 같이:

3. 다중 주소

  Multi-Addr 구성 요소의 목적은 주소 데이터에 자체 설명 정보를 추가하는 것입니다. Multi-Addr는 두 가지 버전으로 나뉘는데 하나는 사용자에게 표시하는 데 사용되는 읽기 쉬운 UTF-8 인코딩 버전이고 다른 하나는 네트워크 전송에 편리한 16진수 버전입니다.
  Multi-Addr의 형식에는 주소 유형 코드 유형과 코딩된 데이터 값의 두 가지 유형의 정보가 있습니다.각 Multi-Addr는 /주소 유형 코드 이름/주소와 같은 유형/값 주기로 표시됩니다. /주소 유형 코드 이름/주소

<UTF-8 Multi-Address> ::= /<UTF-8 type-地址类型>/<UTF-8地址>

Multi-Addr에는 다음과 같은 기능 유형 테이블이 있으며 Multi-Formasts에 통합되었습니다.

4.멀티 코덱

멀티 코덱은 데이터를 보다 압축하고 자기 설명적인 코덱으로 만드는 것입니다.
Multi-Hash, Multi-Addr 및 Multi-Base와 같은 데이터 유형을 정의하는 것 외에도 Multi-Codec은 JSON 파일 유형, 압축 유형, 이미지 유형 및 IPLD도 정의합니다.
다중 코드의 형식은 다음과 같습니다.

<Multi-Codec> ::= /<十六进制 type >/<数据内容>

Multi-Codec은 Multi-Codec 형식을 설계할 때 이전에 점유된 코드를 피하도록 고려되었기 때문에 이전 유형의 Multi-Formats와 호환됩니다.
앞서 언급한 바와 같이 Multi-Codec은 원시 데이터, IPLD 데이터, 블록체인 데이터, 직렬화된 데이터 및 일부 기타 다중 형식을 포함하여 여러 유형의 데이터를 정의합니다.
아래 그림과 같이:

5.멀티 스트림

Multi-Stream은 자체 설명적 비트 문자열을 구현하는 데 사용되는 자체 설명적 인코딩 스트림 프로토콜이며 주요 시나리오는 주로 네트워크에서 전송됩니다.
Multi-Stream에는 스트림 길이, Multi-Codec 유형 및 인코딩된 데이터 자체의 3개 필드가 포함되며 두 개의 구분 기호로 구분됩니다.
멀티 스트림의 형식은 다음과 같습니다.

<Multi-Codec> ::= <流长度length>/<Multi-Codec type>\n<编码数据>

둘, libp2p

libp2p는 IPFS 프로토콜 스택 구현에서 가장 중요한 모듈입니다.libp2p
는 IPFS 데이터의 네트워크 통신, 라우팅, 교환 및 기타 기능을 담당합니다.libp2p는
  모든 개발자가 기본적으로 필요로 하는 일부 도구 속성 기능을 추상적으로 통합합니다. 노드 간 링크 재사용, 노드 정보의 상호 교환, 지정된 릴레이 노드, 네트워크 주소 변환(NAT), 분산 해시 테이블(dht) 주소 지정, 메시지 왕복 지연(RTT) 통계 등이 포함됩니다. 아래 그림과 같이:

그림에 표시된 속성 함수에서 Protocol Labs 및 오픈 소스 커뮤니티의 기여자는 특정 실현 및 계획된 장기 목표를 달성했습니다.
아래 그림과 같이:

목적:
libp2p는 P2P 응용 프로그램을 위해 특별히 설계된 확장하기 쉬운 다중 모듈 네트워크 스택 라이브러리입니다.그 응용 프로그램 시나리오는 주로 사물 인터넷, 블록체인, 분산 메시징 및 파일 전송에 중점을 둡니다.
1. 사물 인터넷: 우리가 보안 현장에 익숙한 것처럼 보안 카메라와 휴대폰 사이에 직접 연결이 설정되어 중앙 서버의 대역폭 압력을 줄입니다.
2. 블록체인: libp2p를 기본 서비스로 사용하는 블록체인 분야의 일부 프로젝트도 있습니다. Filecoin 및 Polkadot(Poka 체인) 프로젝트 등.
Libp2p는 Filecoin의 "블록 데이터 동기화", "파일 전송" 및 "노드 검색"에 사용됩니다.
3. 분산 메시지: 분산 메시지 시스템은 메시지 송수신을 위한 중앙 서버의 전송 기능 없이 노드 간 직접 연결을 설정할 수 있습니다.
4. 파일 전송: Filecoin과 IPFS는 모두 데이터 전송을 위해 libp2p를 기반으로 합니다.

3. IPLD

IPLD는 콘텐츠 주소 지정을 기반으로 하는 데이터 모델의 추상화 계층입니다.IPLD는 블록체인 데이터, Git, BitTorrent 등과 같이 콘텐츠 주소 지정에 중점을 둔 다양한 데이터 구조를 연결할 수 있습니다. [IPLD 데이터 모델] IPLD는 3가지 종류의 데이터 유형을 정의
합니다
. Merkle-Links, Merkle-DAG 및 Merkle-Paths.
Merkle 링크
Merkle 링크에는 두 가지 주요 기능이 있습니다.
1. 암호화 무결성 검증: 사용자는 대상 개체를 해싱하여 데이터 무결성을 테스트할 수 있습니다.
2. 데이터 구조는 변경할 수 없습니다. Merkle 링크가 있는 데이터 구조는 참조된 후에 변경할 수 없습니다.

[콘텐츠 식별자(CID)]
CID는 콘텐츠 주소 지정을 구현하기 위해 해싱을 사용하는 자체 설명 콘텐츠 주소 지정 식별자입니다.
CID에는 현재 CIDv0과 CIDv1의 두 가지 버전이 있습니다. CIDv0은 IPFS 기본 인코딩 규칙 및 암호화 알고리즘에만 적용할 수 있습니다. CIDv1 적응 알고리즘과 코딩 규칙이 크게 향상되었습니다.
1. CIDv1
CIDv1은 다중 기반 유형 프리픽스 코드, cid 버전 번호, 다중 코덱 콘텐츠 식별자 및 완전한 다중 해시의 4개 필드를 포함합니다.
CIDv1의 형식은 다음과 같습니다.

<cidv1> ::= <multibase type><cid-版本号><multicodec><multihash>

2. CIDv0
CIDv0은 CIDv1과 같은 방식으로 정의됩니다. 그러나 CIDv0에서 Multi-Base 유형 코드의 기본값은 Base58이고 CID 버전 번호의 기본값은 0이며 Multi-Codec의 기본값은 Protobuf입니다.

요약하다

이 기사는 주로 Multiformat(자체 설명 형식 프로토콜 라이브러리), libp2p(P2P 네트워크 프로토콜 모듈 라이브러리) 및 IPLD(데이터 구조 모델 라이브러리)를 포함하여 IPFS의 여러 모듈에 대해 간략하게 소개합니다.

Supongo que te gusta

Origin blog.csdn.net/ggj89/article/details/122583098
Recomendado
Clasificación