메인 콘텐츠로 건너뛰기
이 가이드는 로컬에서 독립형 네트워크를 설정하고 메인넷 또는 테스트넷에서 노드를 실행하는 과정을 안내합니다. 각 네트워크의 하드웨어 요구 사항도 해당 탭에서 확인할 수 있습니다.
로컬 노드를 쉽게 설정하려면 setup.sh 스크립트를 다운로드하고 실행하세요. 이렇게 하면 로컬 Injective 네트워크가 초기화됩니다.
wget https://raw.githubusercontent.com/InjectiveLabs/injective-chain-releases/master/scripts/setup.sh
chmod +x ./setup.sh # 스크립트를 실행 가능하게 만들기
./setup.sh
다음을 실행하여 노드를 시작합니다:
injectived start # 이 명령을 실행하면 블록이 들어오기 시작합니다
스크립트가 수행하는 작업에 대한 자세한 설명과 설정 프로세스에 대한 더 세밀한 제어를 원하면 아래를 계속 읽으세요.

체인 초기화

Injective 노드를 실행하기 전에 체인과 노드의 제네시스 파일을 초기화해야 합니다:
# <moniker> 인수는 노드의 사용자 지정 사용자 이름입니다. 사람이 읽을 수 있어야 합니다.
injectived init <moniker> --chain-id=injective-1
위의 명령은 노드를 실행하는 데 필요한 모든 구성 파일과 네트워크의 초기 상태를 정의하는 기본 제네시스 파일을 생성합니다. 이러한 모든 구성 파일은 기본적으로 ~/.injectived에 있지만 --home 플래그를 전달하여 이 폴더의 위치를 덮어쓸 수 있습니다. ~/.injectived 이외의 다른 디렉터리를 사용하기로 선택한 경우 injectived 명령을 실행할 때마다 --home 플래그로 위치를 지정해야 합니다. 이미 제네시스 파일이 있는 경우 --overwrite 또는 -o 플래그로 덮어쓸 수 있습니다.~/.injectived 폴더의 구조는 다음과 같습니다:
.                                   # ~/.injectived
  |- data                           # 노드에서 사용하는 데이터베이스를 포함합니다.
  |- config/
      |- app.toml                   # 애플리케이션 관련 구성 파일.
      |- config.toml                # Tendermint 관련 구성 파일.
      |- genesis.json               # 제네시스 파일.
      |- node_key.json              # p2p 프로토콜에서 노드 인증에 사용할 개인 키.
      |- priv_validator_key.json    # 합의 프로토콜에서 검증자로 사용할 개인 키.

genesis.json 파일 수정

이 시점에서 genesis.json 파일을 수정해야 합니다:
  • staking bond_denom, crisis denom, gov denom, mint denom 값을 "inj"로 변경합니다. 이것이 Injective의 네이티브 토큰이기 때문입니다.
다음 명령을 실행하여 쉽게 수행할 수 있습니다:
cat $HOME/.injectived/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
cat $HOME/.injectived/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
cat $HOME/.injectived/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
cat $HOME/.injectived/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
위의 명령은 기본 .injectived 디렉터리를 사용하는 경우에만 작동합니다. 특정 디렉터리의 경우 위의 명령을 수정하거나 genesis.json 파일을 수동으로 편집하여 변경 사항을 반영하세요.

검증자 계정용 키 생성

체인을 시작하기 전에 최소 하나의 계정으로 상태를 채워야 합니다. 이를 위해 먼저 test keyring 백엔드 아래에 my_validator라는 새 계정을 keyring에 생성합니다(다른 이름과 다른 백엔드를 자유롭게 선택하세요):
injectived keys add my_validator --keyring-backend=test

# 생성된 주소를 나중에 사용하기 위해 변수에 저장합니다.
MY_VALIDATOR_ADDRESS=$(injectived keys show my_validator -a --keyring-backend=test)
이제 로컬 계정을 생성했으므로 체인의 제네시스 파일에서 inj 토큰을 부여합니다. 이렇게 하면 체인이 제네시스부터 이 계정의 존재를 인식하게 됩니다:
injectived add-genesis-account $MY_VALIDATOR_ADDRESS 100000000000000000000000000inj --chain-id=injective-1
$MY_VALIDATOR_ADDRESS는 keyring의 my_validator 키 주소를 보유하는 변수입니다. Injective의 토큰은 {amount}{denom} 형식입니다: amount는 18자리 정밀도의 소수이고 denom은 명명 키(예: inj)가 있는 고유한 토큰 식별자입니다. 여기서는 injectived에서 스테이킹에 사용되는 토큰 식별자인 inj 토큰을 부여합니다.

체인에 검증자 추가

이제 계정에 토큰이 있으므로 체인에 검증자를 추가해야 합니다. 검증자는 체인에 새 블록을 추가하기 위해 합의 과정에 참여하는 특수 풀 노드입니다. 모든 계정이 검증자 운영자가 되겠다는 의사를 선언할 수 있지만, 충분한 위임을 받은 계정만 활성 세트에 들어갈 수 있습니다. 이 가이드에서는 위의 init 명령을 통해 생성된 로컬 노드를 체인의 검증자로 추가합니다. 검증자는 gentx라는 제네시스 파일에 포함된 특수 트랜잭션을 통해 체인이 처음 시작되기 전에 선언할 수 있습니다:
# gentx를 생성합니다.
injectived genesis gentx my_validator 1000000000000000000000inj --chain-id=injective-1 --keyring-backend=test

# 제네시스 파일에 gentx를 추가합니다.
injectived genesis collect-gentxs
gentx는 세 가지 작업을 수행합니다:
  1. 생성한 validator 계정을 검증자 운영자 계정(즉, 검증자를 제어하는 계정)으로 등록합니다.
  2. 제공된 amount의 스테이킹 토큰을 셀프 위임합니다.
  3. 운영자 계정을 블록 서명에 사용될 Tendermint 노드 pubkey와 연결합니다. --pubkey 플래그가 제공되지 않으면 위의 injectived init 명령을 통해 생성된 로컬 노드 pubkey가 기본값으로 사용됩니다.
gentx에 대한 자세한 정보는 다음 명령을 사용하세요:
injectived genesis gentx --help

app.tomlconfig.toml을 사용하여 노드 구성

~/.injectived/config 내에 두 개의 구성 파일이 자동으로 생성됩니다:
  • config.toml: Tendermint를 구성하는 데 사용됩니다(Tendermint 문서에서 자세히 알아보기).
  • app.toml: Cosmos SDK(Injective가 구축된 기반)에서 생성되며 상태 정리 전략, 텔레메트리, gRPC 및 REST 서버 구성, 상태 동기화 등의 구성에 사용됩니다.
두 파일 모두 자세한 주석이 있습니다. 노드를 조정하려면 직접 참조하세요.조정할 예시 구성 중 하나는 app.toml 내의 minimum-gas-prices 필드입니다. 이 필드는 검증자 노드가 트랜잭션 처리를 위해 기꺼이 수락하는 최소 가스 가격을 정의합니다. 비어 있으면 필드를 10inj와 같은 값으로 편집해야 합니다. 그렇지 않으면 노드가 시작 시 중단됩니다. 이 튜토리얼에서는 최소 가스 가격을 0으로 설정합니다:
 # 검증자가 트랜잭션 처리를 위해 기꺼이 수락하는 최소 가스 가격입니다.
 # 트랜잭션 수수료는 이 구성에 지정된 모든 명명의
 # 최소값을 충족해야 합니다 (예: 0.25token1;0.0001token2).
 minimum-gas-prices = "0inj"

로컬넷 실행

이제 모든 것이 설정되었으므로 마침내 노드를 시작할 수 있습니다:
injectived start # 이 명령을 실행하면 블록이 들어오기 시작합니다
이 명령을 사용하면 단일 노드를 실행할 수 있으며, 이것만으로도 노드를 통해 체인과 상호작용하기에 충분하지만 여러 노드를 동시에 실행하여 노드 간의 합의가 어떻게 이루어지는지 확인할 수도 있습니다.