론칭 준비

이 가이드의 목표는 로컬 테스트 환경 외부에서 파라체인을 론칭하는 방법을 안내하는 것입니다. protocolId가 고유하게 설정되어 있고 런타임 가중치가 올바른지 확인하는 방법을 배우게 될 것입니다.

파라체인의 런타임 제약은 솔로체인보다 훨씬 엄격합니다. 왜냐하면 상태 전이를 완료하기 위해 릴레이 체인과 조정해야 하기 때문입니다. 파라체인을 프로덕션에 론칭할 때는 체인의 런타임이 올바르게 구성되고 테스트되었는지 확인하는 것이 매우 중요합니다.

고유한 프로토콜 식별자 설정

네트워크 충돌은 큰 문제를 일으킬 수 있습니다. 모든 체인은 테스트 네트워크, 릴레이 체인 또는 파라체인을 포함한 어떤 유형의 네트워크도 사용하지 않는 고유한 protocolId를 사용해야 합니다. 고유한 프로토콜 식별자를 사용하면 노드가 올바른 피어 노드와 연결되고 다른 libp2p 네트워크의 노드와 연결되지 않도록 보장할 수 있습니다. 이 ID로 특정 피어 그룹에 격리시키고 싶습니다. 프로토콜 ID 충돌은 노드에 많은 문제를 일으킬 것입니다.

고유한 프로토콜 ID를 설정하려면 어떤 nonce 또는 salt 값을 사용하는지 확인하십시오. 이는 /client/network/src/command.rs의 CLI 항목으로 설정되며 /client/network/src/chain_spec.rs로 전달됩니다.

모든 체인 스펙 파일에 이 항목이 필드로 포함되어 있습니다. 예를 들어, 주요 릴레이 체인 런타임 체인 스펙에는 고유한 프로토콜 ID가 있습니다. Polkadot의 경우:

// polkadot 저장소의 원시(raw) 체인 스펙 파일 `/node/service/chain-specs/polkadot.json`
{
  //--snip--
  "protocolId": "dot"
  //--snip--
}

앞으로 이 상수를 안전하게 구성하는 더 나은 방법에 대한 업데이트에 대한 정보는 이 이슈를 모니터링하십시오.

메모리 프로파일링

콜레이터 메모리 프로파일링을 수행하여 메모리 누수를 분석하고 메모리 소비가 발생하는 위치를 식별하며 임시 할당을 정의하고 응용 프로그램 내에서 과도한 메모리 단편화를 조사해야 합니다.

런타임 크기 최소화

파라체인을 론칭할 때는 릴레이 체인의 자원 소비량을 최소화하기 위해 런타임의 압축 버전을 사용하는 것이 중요합니다.

  • 제한된 기능으로 파라체인을 론칭하고 런타임 업그레이드를 통해 점진적으로 기능을 추가하는 것이 권장됩니다. 그 이유는 런타임 업그레이드 중에 이전 런타임과 새로운 런타임이 PoVBlock에 포함되기 때문에 변경 사항이 충분히 크면 PoVBlock 크기 제한으로 인해 블록이 릴레이 체인에 거부될 수 있기 때문입니다.

  • 런타임이 상태 증명에 포함되어 있는 경우 PoV 블록(예: 새로운 런타임, PoV 상태 증명, 이전 런타임이 포함된 extrinsic 집합)이 PoVBlock 크기 제한 내에 들어가도록 해야 합니다. 런타임이 상태 증명에 포함되지 않은 경우 새로운 런타임의 크기 제한은 훨씬 더 높을 것입니다.

중요한 파라체인 제약 사항

모든 릴레이 체인(공통 상수)에 대한 최대 크기는 Polkadot 저장소에서 확인할 수 있습니다. 다음 사항을 기록해 두세요:

  • 대상이 되는 릴레이 체인의 런타임 버전(이러한 것들은 변경될 수 있음)

  • MAX_CODE_SIZE

  • MAX_HEAD_DATA_SIZE

  • MAX_POV_SIZE

이러한 최대값 내에 파라체인이 편안하게 들어가야 합니다. 또한 Polkadot-JS Apps UI를 릴레이 노드에 연결하여 이러한 상수를 확인할 수 있습니다: 개발자 -> 파라체인 구성 -> 활성 구성

적절한 가중치 사용

런타임 벤치마킹을 사용하여 런타임 가중치가 실제로 런타임에서 사용되는 리소스를 나타내는지 확인하십시오.

사용자 정의 가중치

벤치마크와 다른 가중치를 사용해야 하는 경우 런타임의 각 팔렛이 올바른 가중치 시스템을 사용하는지 확인하십시오. 기본 가중치나 "추정된" 가중치는 일반적인 규칙으로는 프로덕션에서 사용하지 말아야 합니다.

블록 가중치 제한 설정

실행 시간이 불확실한 경우 처음에는 블록 가중치 제한(블록 생성 시간)을 0.5초로 설정하는 것이 좋습니다. 네트워크의 실행 시간이 안정화되면 가중치 제한을 2초로 늘릴 수 있습니다.

호출 필터 설정

특히 파라체인을 론칭할 때는 특정 클래스 의 사용자에게 활성화할 기능을 매우 제한해야 할 수도 있습니다. 이는 호출 필터를 사용하여 수행할 수 있습니다.

다음은 Statemine 런타임 배포에서 구현된 필터를 사용하여 기능을 제한하고 활성화하는 방법의 예입니다.

점진적인 런타임 배포

론칭 전에 위에서 설명한 제한에 도달하는 경우(예: 너무 큰 런타임) 가능한 한 많은 기능을 제거하고 점진적으로 업그레이드하는 것이 매우 좋습니다. 이러한 경우 다음을 수행할 수 있습니다:

  1. 모든 팔렛을 포함한 전체 런타임 기능으로 체인의 제네시스 상태를 생성합니다.

  2. 파라체인 론칭 시 필요하지 않은 모든 팔렛을 런타임에서 제거합니다.

  3. 체인의 WASM 블롭(유효성 검사 로직)과 런타임을 다시 빌드합니다.

  4. 업데이트된 제네시스와 (3)에서 생성된 WASM 블롭으로 파라체인을 등록합니다.

  5. 파라체인이 활성화된 후에는 런타임을 업그레이드하여 누락된 팔렛을 포함할 수 있습니다. (팔렛 인덱스와 이름이 (1) 단계에서 생성된 제네시스 상태를 생성하는 데 사용된 것과 일치하는지 확인하고 스토리지 마이그레이션을 수행할 필요가 없도록 해야 합니다.) 온체인 런타임 업그레이드에 대한 자세한 내용은 다음 섹션을 참조하십시오.

이러한 점진적인 런타임 업그레이드를 실제로 수행하는 방법에 대한 자세한 내용은 파라체인 런타임 업그레이드 가이드를 참조하십시오.

론칭 시뮬레이션

프로덕션 테스트넷이나 메인넷에서 어떤 작업을 시도하기 전에 가능한 한 실제 네트워크의 동작을 가장 정확하게 시뮬레이션하는 네트워크에서 체인을 론칭해야 합니다. 제한된 네트워크에서 테스트하는 것은 많은 콜레이터와 검증자, 대역폭 및 지연과 같은 제약 조건을 가진 실제 네트워크에서 발생할 수 있는 잠재적인 실패에 대비하는 데 도움이 됩니다. 테스트에 실제 네트워크를 가능한 한 가깝게 시뮬레이션할수록 런타임 업그레이드가 성공할 확률이 높아집니다.

이러한 테스트 자동화 도구를 위한 선택적 도구를 확인하려면 로컬 릴레이 체인 준비를 참조하십시오.

예시

자원

Last updated