Asynchronous Backing 적용하기
Inclusion 과 Backing 을 분리하여 파라체인 throughput 을 증가시킬 수 있는 async backing 을 적용하는 방법에 대해 설명합니다.
개요
기존 릴레이 체인의 파라체인 블록은 Inclusion 과 Backing 파이프라인이 서로 의존적(a.k.a Synchronous Backing) 으로 진행되어 파라체인 블록이 생성되고 다음 블록이 생성되는 시간에 큰 딜레이(e.g 파라체인 블록 생성 시간 = 12초)가 있었습니다. 이를 보안하기 위해 두 파이프라인을 분리하여 비동기적으로 파라체인 블록을 검증할 수 있는 프로토콜인 Asynchronous Backing 을 적용하여 기존 파라체인 노드를 업그레이드 하는 방법에 대해 설명합니다.
파라체인 업데이트
Phase 1 - 파라체인 런타임 업데이트
ConsensusHook
타입UNINCLUDED_SEGMENT_CAPACITY
: 릴레이 체인에 의해 확정되지 않았지만 생성할 수 있는 파라체인 블록 수. 여기서는3
으로 설정해줍니다.3
의 의미는 확정되지 않은 블록을 최대 3개 까지 생성할 수 있다는 의미입니다.BLOCK_PROCESSING_VELOCITY
: 하나의 릴레이 체인 블록에 생성할 수 있는 파라체인 블록 수. 여기서는1
로 설정해줍니다.1
의 의미는 릴레이 체인 블록에 anchoring 할 수 있는 파라체인 블록이 최대 2 개라는 의미입니다.cumulus_pallet_parachain_system
설정CheckAssociatedRelayNumber
: 릴레이 체인 블록 정책입니다. 여기서는RelayNumberMonotonicallyIncreases
로 설정해줍니다. 해당 타입의 의미는 파라체인이 바라보는 릴레이 체인 블록이 전 블록이 바롸봤던 릴레이 체인 블록 넘버와 같거나 커야함을 의미합니다.ConsensusHook
: 여기서는 위에서 정의했던ConsensusHook
으로 설정해줍니다.pallet_aura
설정
AllowMultipleBlocksPerSlot
: 하나의 slot 에 여러 개의 블록 허용 여부를 나타냅니다. 여기서는 true
로 변경해줍니다.
SlotDuration
: 한 슬롯의 기간을 의미. 여기서는 6_000
으로 설정하여 한 슬롯의 기간이 6초임을 나타내줍니다.
Cargo.toml
에cumulus_primitives_aura
추가Maximum_Block_Weight
를 2 초로 증가시키기pallet_timestamp
의MINIMUM_PERIOD
을0
으로 설정
Phase 2 - 파라체인 노드 업데이트
infra_parachain/src/service.rs
파일에서basic_aura
를lookahead_aura
로 교체합니다. Node 의 param 부분에 정의되어있는authoring_duration
을500
에서Duration::from_millis(1500)
으로 변경해줍니다. 그 후basic_aura::run
에서aura::run
으로 변경해줍니다.infra_parachain/src/command.rs
로 가서 커맨드에 맞는start_*
로 변경해줍니다(e.gstart_asset_hub_lookahead_node
)
참고
Last updated