CESS 연구 개발 이사: 우리가 Substrate를 위해 저장 Pallet을 개발하는 이유

CESS
2024-08-16 16:15:24
수집
CESS는 Substrate를 위해 개발한 저장 pallet와 개발자 사용 가이드를 완료했습니다.

CESS가 Substrate를 위해 개발한 저장 pallet이 완료되었습니다. Substrate로 개발하는 팀은 CESS 메인넷이 출시된 후 이 pallet을 사용하여 CESS의 저장 서비스를 직접 호출할 수 있습니다. 이제 CESS 연구 개발 총괄 책임자 Swowk가 왜 저장 pallet을 개발해야 했는지에 대한 생각을 함께 되짚어보겠습니다.

1. 배경

다기능 블록체인 프레임워크인 Substrate는 개발자들이 사용할 수 있는 여러 모듈(또는 pallet)을 제공합니다. 계정 및 자산과 같은 자원 관리부터 난수 생성기 및 스케줄러와 같은 유틸리티까지, 이러한 기존의 pallet은 대부분의 개발자 애플리케이션 시나리오의 요구를 충족할 수 있습니다. 그러나, 여전히 개선의 여지가 있습니다.

최근 우리는 Substrate에서 데이터 저장 서비스를 구현할 필요가 있었지만, 모든 기존 pallet을 검토한 결과 우리의 요구를 충족하는 pallet을 찾지 못했습니다. 그래서 우리는 이 문제를 해결하기 위해 맞춤형 pallet을 개발하고자 했습니다.

여기서 우리는 니치 마케팅에 대한 이야기를 하지 않겠습니다. 현실에서 애플리케이션은 실행 과정에서 시스템, 사용자 또는 임시 데이터와 같은 다양한 데이터를 지속적으로 소비하고 생성합니다. 이는 일반적인 시나리오입니다. 많은 DApp은 NFT와 같은 오프체인 데이터 저장 서비스가 필요한 경우가 많습니다. 선택한 저장 서비스의 품질은 전체 애플리케이션의 성능과 신뢰성에 직접적인 영향을 미칩니다.

따라서, 우리는 Substrate/Polkadot 커뮤니티에 현재 Substrate API와 호환되는 저장 서비스에 전념하는 pallet을 제공하고자 하며, 개발자는 소량의 코드 변경만으로 CESS의 안정적이고 안전한 데이터 저장을 활용할 수 있습니다. 우리는 이것이 Substrate 사용 시 개발 경험을 더욱 향상시키고 Polkadot 생태계를 풍부하게 할 것이라고 믿습니다.

2. 현재 솔루션의 결함

현재 Substrate FRAME에는 데이터 저장과 관련된 pallet이 하나만 존재합니다. 즉, Transaction Storage Pallet입니다. 이 pallet은 Substrate와 병렬로 IPFS 노드를 실행할 수 있도록 지원하며, IPFS가 데이터를 Substrate 저장소에 넣은 후 이를 검색할 수 있도록 합니다. 그러나, 그 고유한 특성과 몇 가지 결함으로 인해 그 응용 범위는 크게 제한됩니다:

  • 데이터는 블록체인 네트워크에 업로드해야 합니다. 비록 이 데이터가 실제로 체인에 저장되지 않더라도, 여전히 추가적인 가스 비용과 혼잡을 초래하여 대용량 파일 저장에 적합하지 않습니다.
  • 모든 검증자 노드는 자신만의 IPFS 서비스를 구축해야 하며, 많은 제약을 받습니다.
  • 개발 난이도가 높고, Substrate 기반 코드에 많은 수정이 필요합니다.
  • 이 pallet은 Substrate 측의 파일 업로드만 지원하며, 조회자는 IPFS 클라이언트를 통해 이를 검색해야 합니다.

3. CESS의 새로운 솔루션

우리는 Substrate 기반의 데이터 저장 서비스를 설계하고 구현했습니다. 한편으로, 검증자 노드는 추가 서비스를 시작할 필요가 없으며, Substrate 기반 코드에 대한 중대한 수정도 필요하지 않습니다. 따라서 새로운 체인이든 기존 체인이든 개발자는 우리의 저장 서비스를 쉽게 통합할 수 있습니다.

다른 한편으로, 사용자들은 맞춤형 저장 REST 구성 요소를 통해 추가 클라이언트 프로그램을 설치하지 않고도 데이터를 쉽게 업로드하고 다운로드할 수 있습니다.

4. 설계 아키텍처

우리의 제안 아키텍처는 아래 그림과 같이 Data Storage Pallet과 맞춤형 Storage Sidecar로 구성되어 있으며, 이 프레임워크는 Substrate API Sidecar(https://github.com/paritytech/substrate-api-sidecar)에서 영감을 받았습니다.

데이터 저장 pallet: 저장 데이터의 기록 및 관리를 구현합니다. 이 pallet은 메타데이터와 관련된 기능을 구현하며, 예를 들어 루트 데이터 관리, 데이터 소유자 관리 및 저장 데이터에 대한 데이터 분류를 포함합니다.

맞춤형 저장 Sidecar: RESTful 서비스를 제공하여 Data Storage Pallet과 상호작용합니다. Substrate API Sidecar와의 차이점은 Storage Sidecar가 Substrate 기반 블록체인과 상호작용하는 기본 기능 외에도 데이터 저장 및 데이터 검색과 관련된 API를 캡슐화한다는 것입니다. 사용자가 전송한 데이터는 궁극적으로 이 인터페이스를 통해 CESS 저장 시스템에 저장됩니다.

5. 핵심 기능

데이터 저장

  • 사용자는 맞춤형 저장 Sidecar의 데이터 저장 API를 호출하여 데이터 파일을 업로드합니다.
  • 캡슐화된 CESS API를 호출하여 데이터를 CESS에 전달합니다.
  • 데이터가 성공적으로 기록되었음을 확인하면, 맞춤형 저장 Sidecar는 Extrinsic을 호출하여 체인상의 데이터 파일 관련 정보를 기록합니다.
  • CESS 저장 시스템은 전체 생애 주기 동안 데이터의 무결성과 개인 정보를 유지합니다.

데이터 검색

  • 사용자는 맞춤형 저장 Sidecar의 저장 API를 호출하여 목표 데이터를 가져옵니다.
  • 맞춤형 Storage Sidecar를 이용하여 체인상의 데이터 라우팅 정보를 조회합니다.
  • 라우팅 정보를 사용하여 CESS 데이터 검색 API를 호출합니다.
  • CESS 저장 시스템에서 목표 데이터를 검색하여 반환합니다.
  • 목표 데이터를 맞춤형 Storage Sidecar로 반환합니다.
  • 필요 시 맞춤형 Storage Sidecar는 체인상 정보를 업데이트합니다.
  • 목표 데이터를 사용자에게 반환합니다.

6. 사용 방법

사실, 개발자는 단 두 단계만으로 CESS 저장 서비스를 경험할 수 있습니다.

  • Step 1 Data Store Pallet을 FRAME에 통합하기

텍스트 편집기에서 코드의 runtime/Cargo.toml 구성 파일을 엽니다.

crate를 의존성 목록에 추가하여 pallet-data-store crate를 가져와 런타임에서 사용할 수 있도록 합니다.

pallet-data-store = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "main" }

다음 코드를 features 모듈에 추가하여 pallet-data-store crate를 features 목록에 포함시킵니다; >

[features]
default = ['std']
std = [
    ...
    'pallet-aura/std',
    'pallet-balances/std',
    # 이 줄을 추가합니다
    "pallet-data-store/std",
    ...
]

텍스트 편집기에서 runtime/src/lib.rs 파일을 엽니다.

Balances 코드의 마지막 줄 뒤에 Data Store pallet을 위한 다음 코드를 추가합니다:

parameter_types! {
    pub const StringLimit: u32 = 1024;
}
/// pallet-data-store를 구성합니다.
impl pallet_data_store::Config for Runtime { 
    type Event = Event;
    type StringLimit = StringLimit;
    type WeightInfo =      pallet_data_store::weights::DataStoreWeight<Runtime>;
}

Data Store를 construct_runtime! 매크로에 추가합니다.

// 이전에 구성된 FRAME pallets를 조합하여 런타임을 생성합니다.

다음 명령어를 실행하여 릴리스 모드로 노드를 컴파일합니다.

cargo build --release
  • Step 2 맞춤형 Storage Sidecar를 사용하여 데이터 저장하기

Runtime FRAME 통합이 완료되면, 이제 우리의 Data Store Sidecar(https://github.com/CESSProject/data-store-sidecar)를 통해 블록체인 네트워크와 상호작용하고 CESS 저장 서비스를 동시에 사용할 수 있습니다. 다음은 Sidecar에서 CESS 저장 기능을 사용하는 튜토리얼입니다:

먼저, 이 링크(https://github.com/CESSProject/data-store-sidecar#source-code-installation-and-usage)의 내용을 따라 설치 및 시작을 완료합니다.

물론, Docker를 사용한 빠른 배포도 지원합니다(https://github.com/CESSProject/data-store-sidecar#docker).

서비스가 성공적으로 시작되면, 바로 호출할 수 있습니다. 사용자 가이드는 API 문서(https://example-datastore.cess.cloud/docs/)를 참조하십시오.

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축