메인 콘텐츠로 건너뛰기
이 가이드는 아카이벌 데이터를 제공하는 노드 플릿을 생성하고 게이트웨이를 사용하여 연결하는 과정을 안내합니다.

아키텍처

아카이벌 데이터 제공을 더 접근하기 쉽게 하기 위해 데이터를 더 작은 세그먼트로 분할합니다. 이러한 세그먼트는 s3://injective-snapshots/mainnet/subnode에 저장됩니다.
Snapshot Dir높이 범위Injective 버전권장 디스크 크기
/00730 – 73Mv1.12.142 TiB
/606860M – 68Mv1.12.17 TiB
/738073M – 80Mv1.12.17 TiB
/808880M – 88Mv1.13.37 TiB
/889688M – 96Mv1.13.37 TiB
/889888M – 98Mv1.13.37 TiB
/9810698M – 106Mv1.13.37 TiB
/9810798M – 107Mv1.14.07.5 TiB
/6610166M – 101Mv1.14.027 TiB
/105116105M – 116Mv1.15.07.5 TiB
/113127113M – 127Mv1.15.011 TiB
/119143119M – 143Mv1.17.016 TiB
/138150138M – 150Mv1.17.25.8 TiB
이러한 세그먼트는 블록 범위에 따라 쿼리를 적절한 노드로 라우팅하는 애그리게이터 프록시인 게이트웨이를 통해 연결됩니다. Archival Architecture

시스템 요구 사항

아카이벌 데이터 슬라이스를 호스팅하는 각 노드는 다음 최소 요구 사항을 충족해야 합니다.
구성 요소최소 사양참고
CPUAMD EPYC™ 9454P48 코어 / 96 스레드
메모리128 GB DDR5 ECCDDR5-5200 MHz 이상, 데이터 무결성을 위한 ECC
스토리지7 – 40 TB NVMe Gen 4PCIe 4.0 드라이브, 단일 드라이브 또는 RAID-0 어레이 가능

설정 단계

아카이벌 세그먼트를 호스팅하는 각 노드에서:

1. 설정에 필요한 히스토리가 있는 아카이벌 세그먼트를 다운로드합니다:

aws s3 cp --recursive s3://injective-snapshots/mainnet/subnode/<SNAPSHOT_DIR> $INJ_HOME

2. 위 표를 기반으로 적절한 injective 바이너리 또는 이미지 태그를 다운로드하거나 설정합니다.

3. config 폴더를 생성합니다:

injectived init $MONIKER --chain-id injective-1 --home $INJ_HOME --overwrite

4. app.toml 파일에서 프루닝을 비활성화하고 config.toml 파일에서 p2p를 차단하고 로그 레벨을 error로 설정합니다.

이렇게 하면 데이터가 프루닝되지 않고 노드가 중지된 상태로 유지됩니다. 로그 레벨을 error로 설정하면 디스크 작업이 줄어들고 성능이 향상됩니다.
# app.toml에서 프루닝 비활성화
sed -i 's/^pruning *= *.*/pruning = "nothing"/' $INJ_HOME/config/app.toml

# config.toml에서 p2p 비활성화 및 빈 블록 생성 비활성화
awk '
    BEGIN { section = "" }
    /^\[/ {
    section = $0
    }
    section == "[p2p]" {
    if ($1 ~ /^laddr/) $0 = "laddr = \"tcp://0.0.0.0:26656\""
    if ($1 ~ /^max_num_inbound_peers/) $0 = "max_num_inbound_peers = 0"
    if ($1 ~ /^min_num_inbound_peers/) $0 = "min_num_inbound_peers = 0"
    if ($1 ~ /^pex/) $0 = "pex = false"
    if ($1 ~ /^seed_mode/) $0 = "seed_mode = false"
    }
    section == "[consensus]" {
    if ($1 ~ /^create_empty_blocks/) $0 = "create_empty_blocks = false"
    }
    { print }
    ' $INJ_HOME/config/config.toml > $INJ_HOME/config/config.tmp && mv $INJ_HOME/config/config.tmp $INJ_HOME/config/config.toml

# 로그 레벨을 error로 설정 (디스크 쓰기 감소 = 성능 향상)
sed -i 's/^log_level *= *.*/log_level = "error"/' $INJ_HOME/config/app.toml

5. 노드를 실행합니다:

injectived start --home $INJ_HOME

게이트웨이 구성

1. 게이트웨이 저장소를 클론합니다:

git clone https://github.com/decentrio/gateway

2. 게이트웨이를 빌드합니다:

make build

3. 구성 파일을 생성합니다:

upstream:
  # 예시: 노드 1은 블록 0-80M을 보유하고 노드 2는 블록 80-88M을 보유
  - rpc: "http://$NODE1:$RPC_PORT"
    grpc: "$NODE1:$GRPC_PORT"
    api: "http://$NODE1:$API_PORT"
    blocks: [0,80000000]  
  - rpc: "http://$NODE2:$RPC_PORT"
    grpc: "$NODE2:$GRPC_PORT"
    api: "http://$NODE2:$API_PORT"
    blocks: [80000000,88000000]

  # <다른 노드들>

  # 아카이벌 팁, 최신 x 블록을 제공하며 일반적으로 프루닝된 노드로 설정
  - rpc: "http://$PRUNED_NODE:$RPC_PORT"
    grpc: "$PRUNED_NODE:$GRPC_PORT"
    api: "http://$PRUNED_NODE:$API_PORT"
    blocks: [1000]


ports:
  rpc: $RPC_PORT
  api: $API_PORT 
  grpc: $GRPC_PORT
  # 현재 비활성화하려면 0으로 설정
  jsonrpc: 0
  jsonrpc_ws: 0

4. 게이트웨이를 실행합니다:

gateway start --config $CONFIG_FILE