본문으로 건너뛰기

커스텀 오버레이

TON 노드들은 _오버레이_라고 불리는 서브넷을 형성하여 서로 통신합니다. 각 샤드의 공개 오버레이, 검증자들이 참여하는 일반 검증자 오버레이, 특정 검증자 세트를 위한 오버레이와 같은 몇 가지 공통 오버레이가 있습니다.

노드는 커스텀 오버레이에 참여하도록 구성될 수도 있습니다. 현재 이러한 오버레이는 두 가지 목적으로 사용될 수 있습니다:

  • 외부 메시지 브로드캐스팅
  • 블록 후보 브로드캐스팅

커스텀 오버레이 참여를 통해 공개 오버레이의 불확실성을 피하고 전송 신뢰성과 지연시간을 개선할 수 있습니다.

각 커스텀 오버레이는 외부 메시지와 블록을 보낼 수 있는 권한 등 사전 정의된 권한을 가진 참여자 목록이 엄격하게 결정됩니다. 오버레이의 설정은 모든 참여 노드에서 동일해야 합니다.

여러 노드를 제어하고 있다면, 모든 검증자가 블록 후보를 보낼 수 있고 모든 LS가 외부 메시지를 보낼 수 있는 커스텀 오버레이로 통합하는 것이 유익합니다. 이렇게 하면 LS가 더 빠르게 동기화되는 동시에 외부 메시지 전송률이 높아지고(일반적으로 전송이 더 안정적) 됩니다. 추가 오버레이는 추가 네트워크 트래픽을 발생시킨다는 점에 유의하세요.

기본 커스텀 오버레이

Mytonctrl은 https://ton-blockchain.github.io/fallback_custom_overlays.json 에서 사용할 수 있는 기본 커스텀 오버레이를 사용합니다. 이 오버레이는 대부분의 시간 동안 사용되지 않으며 공개 오버레이 연결에 문제가 있는 경우 비상용으로 사용됩니다. 기본 커스텀 오버레이 참여를 중지하려면 다음 명령을 실행하세요

MyTonCtrl> set useDefaultCustomOverlays false
MyTonCtrl> delete_custom_overlay default

커스텀 오버레이 생성

ADNL 주소 수집

커스텀 오버레이에 검증자를 추가하려면 validator-console -c getconfig로 확인할 수 있는 fullnode adnl id 또는 mytonctrl의 status에서 찾을 수 있는 validator adnl id를 사용할 수 있습니다. 커스텀 오버레이에 라이트서버를 추가하려면 반드시 fullnode adnl id를 사용해야 합니다.

설정 파일 생성

다음 형식으로 설정 파일을 생성하세요:

{
"adnl_address_hex_1": {
"msg_sender": true,
"msg_sender_priority": 1
},
"adnl_address_hex_2": {
"msg_sender": false
},

"adnl_address_hex_2": {
"block_sender": true
},
...
}

msg_sender_priority는 블록에 외부 메시지가 포함되는 순서를 결정합니다: 우선 순위가 높은 소스의 메시지가 먼저 처리됩니다. 공개 오버레이와 로컬 LS의 메시지는 우선 순위 0을 가집니다.

주의: 설정에 나열된 모든 노드가 오버레이에 참여해야 합니다(즉, 정확히 이 설정으로 오버레이를 추가해야 함). 그렇지 않으면 연결이 좋지 않고 브로드캐스트가 실패할 것입니다

@validators라는 특별한 단어를 사용하여 mytonctrl이 각 라운드마다 현재 모든 검증자를 추가하여 자동으로 생성하는 동적 커스텀 오버레이를 만들 수 있습니다.

커스텀 오버레이 추가

mytonctrl 명령을 사용하여 커스텀 오버레이를 추가하세요:

MyTonCtrl> add_custom_overlay <name> <path_to_config>

이름과 설정 파일이 모든 오버레이 멤버에서 반드시 동일해야 합니다. mytonctrl의 list_custom_overlays 명령을 사용하여 오버레이가 생성되었는지 확인하세요.

디버그

노드 상세 수준을 4로 설정하고 "CustomOverlay" 단어로 로그를 grep할 수 있습니다.

커스텀 오버레이 삭제

노드에서 커스텀 오버레이를 제거하려면 mytonctrl 명령 delete_custom_overlay <name>을 사용하세요. 오버레이가 동적인 경우(즉, 설정에 @validators 단어가 있는 경우) 1분 내에 삭제되고, 그렇지 않으면 즉시 제거됩니다. 노드가 커스텀 오버레이를 삭제했는지 확인하려면 mytonctrl의 list_custom_overlays와 validator-console의 showcustomoverlays 명령을 확인하세요.

로우 레벨

커스텀 오버레이 작업을 위한 validator-console 명령 목록:

  • addcustomoverlay <path_to_config> - 로컬 노드에 커스텀 오버레이를 추가합니다. 이 설정은 mytonctrl용 설정과 다른 형식이어야 합니다:
    {
    "name": "OverlayName",
    "nodes": [
    {
    "adnl_id": "adnl_address_b64_1",
    "msg_sender": true,
    "msg_sender_priority": 1
    },
    {
    "adnl_id": "adnl_address_b64_2",
    "msg_sender": false
    }, ...
    ]
    }
  • delcustomoverlay <name> - 노드에서 커스텀 오버레이를 삭제합니다.
  • showcustomoverlays - 노드가 알고 있는 커스텀 오버레이 목록을 보여줍니다.