많은 사람들이 블록체인의 탈중앙화는 블록 생산에만 기반을 두고 있다고 생각합니다. 지분 증명(또는 다른 합의) 계층 아래에는 노드를 연결하는 데 사용되는 P2P 네트워크(또는 가십 네트워크)가 있습니다. 이것은 네트워크 케이블로 연결된 노드로 생각할 수 있는 물리적 인프라입니다. 이러한 계층 위에는 프로젝트 관리에 사용되는 거버넌스 계층이 있습니다. 분산 네트워크 없이는 탈중앙화를 이룰 수 없습니다. 보안은 이 두 계층에 따라 달라집니다. 보안과 탈중앙화를 종합적으로 고려하고 세 계층을 모두 포함하는 것이 중요합니다. 블록체인에 대한 공격은 모든 계층을 대상으로 할 수 있습니다. 네트워크 계층이 공격에 성공하면 합의 계층도 손상될 수 있습니다. 새로운 Cardano 노드 버전 1.35.6을 통해 네트워크 참가자는 수동 유지 관리 없이 자동화된 동적으로 업데이트된 P2P 구성을 사용할 수 있습니다. Cardano 네트워크 계층은 더욱 안전해지고 성능이 향상되고 있습니다.

TLDR 이전 버전의 Cardano 노드에서는 SPO가 피어에 대한 불필요하게 많은 수의 연결을 수동으로 유지해야 했습니다. 동적 P2P는 자체 검색 및 최적화를 통해 가장 적합한 피어를 찾는 자동화된 프로세스를 가능하게 합니다. 네트워크는 DoS 공격에 더 강합니다. Cardano 노드는 피어 노드에 대한 연결을 자동으로 재구성하여 P2P 네트워크의 데이터 배포 속도를 최적에 가깝게 만듭니다. 피어 투 피어 네트워크 가십 네트워크라고도 하는 피어 투 피어 네트워크는 네트워크 전체에 정보를 효율적으로 전파하는 데 사용됩니다. 블록체인 네트워크에서 노드는 네트워크의 무결성을 유지하기 위해 새로운 트랜잭션, 블록 및 기타 관련 정보에 대한 정보를 받아야 합니다. 각 노드는 선택한 피어에 대한 여러 수신 및 발신 연결을 설정해야 합니다. 이를 통해 정보 수신 및 배포가 보장됩니다.

노드가 새로운 정보를 수신하면 네트워크에서 무작위로 선택된 노드의 하위 집합과 공유합니다. 그런 다음 해당 노드는 임의로 선택한 노드 하위 집합과 정보를 공유하고 네트워크의 모든 노드가 새 정보를 인식할 때까지 프로세스가 계속됩니다. 덕분에 단일 노드(예: 새로 생성된 블록)의 정보가 전체 네트워크의 모든 노드에 도달합니다.

이 정보 공유 방법은 일부 노드에 도달할 수 없는 경우에도 노드가 통신할 수 있는 다른 노드와 정보를 계속 공유하므로 노드 장애 또는 네트워크 파티션에 매우 탄력적입니다. 그러나 잠재적으로 노드는 적은 수의 피어에 연결될 수 있으며 일부 버그 또는 공격으로 인해 모두 오프라인 상태일 수 있습니다. 따라서 피어의 가용성을 적극적으로 모니터링하는 것이 중요합니다.

새 노드가 처음으로 시작될 때 누구에게 연결해야 합니까? 비트코인 및 이더리움을 포함한 대부분의 블록체인에는 새 노드를 네트워크에 도입하고 피어 목록을 초기화하는 데 도움이 되는 소위 부트스트랩 노드가 필요합니다. 부트스트랩 노드는 P2P 네트워크의 진입점인 경우가 많으며, 여기에서 모든 새 노드가 유기적으로 새 피어를 찾을 수 있습니다. 대부분의 경우 이것은 무작위로 발생하거나 사용자가 신뢰할 수 있는 피어에 대한 연결을 수동으로 설정할 수 있습니다(다른 도구를 사용할 수 있음). 노드에 피어 테이블이 있으면 정보 교환을 시작할 수 있습니다(먼저 블록체인을 동기화해야 함).

새로 연결된 노드는 네트워크의 노드에 무작위로 연결하고 연결에 필요한 정보를 제공할 누군가를 찾을 필요가 없습니다. 부트스트랩 노드의 위험은 인증되지 않은 경우 악의적일 수 있고 중간자 또는 이클립스 공격을 수행할 수 있다는 것입니다.

네트워크 수준에서 일반적으로 새 노드가 연결되는 몇 개의 신뢰할 수 있는 부트스트랩 노드(일반적으로 팀에서 실행)가 있다는 것을 아는 것이 중요합니다. 새 버전의 Cardano 노드에 있는 동적 P2P 연결 기능은 부트스트래핑을 해결하지 않습니다.

Shelley 시대부터 블록 생성 노드는 신뢰할 수 있는 릴레이를 통해 통신을 송수신합니다. SPO는 토폴로지 업데이터라는 수동 커뮤니티 개발 및 관리 도구를 사용하여 구성 파일에서 피어의 정적 목록을 설정할 수 있습니다.

Cardano 네트워크에서 더 나은 보안을 위해 블록 생성 노드가 릴레이 노드 뒤에 숨겨져 있다는 점을 추가해 보겠습니다.

합의 계층은 새로운 합의(새 블록 추가)에 도달할 수 있는 정보가 필요하므로 P2P 네트워크에 의존합니다. 슬롯 리더는 새로 발행된 블록을 적시에 배포할 수 있어야 합니다. 그렇게 하지 않으면 다른 노드가 더 빠르게 전파되는 다른 블록을 생성하므로 블록이 고아가 될 수 있습니다. 이 조건(블록체인 포크)은 바람직하지 않습니다. 이상적으로는 네트워크의 모든 노드가 적시에 모든 정보를 사용할 수 있도록 보장해야 합니다. 이는 피어에 대한 연결이 가능한 한 최적이고 안정적으로 구성되어야 함을 의미합니다.

동적 P2P 연결 카르다노 노드 가동 전

날짜, 소위 하이브리드 모드가 사용되었습니다. 각 노드는 구성에서 선택한 피어에 대한 수신 및 발신 연결을 설정해야 합니다. 토폴로지 업데이터 도구는 SPO가 노드를 구성하고 변경 사항에 대한 정보를 얻는 데 도움이 되었습니다. SPO는 도구를 수동으로 실행하는 데 시간과 노력을 투자해야 합니다(어느 정도 자동화할 수 있음).

Cardano 노드 버전 1.35.6은 피어에 대한 연결을 자동화합니다. 동적 P2P는 자체 검색 및 최적화를 통해 주어진 시간에 주어진 노드에 가장 적합한 피어를 찾는 자동화된 프로세스를 가능하게 합니다. 하이브리드 설정에 필요한 대로 정적 구성을 수동으로 유지 관리할 필요가 없습니다.

업데이트를 통해 네트워크의 성능이 향상되고 변경 사항에 대한 탄력성이 향상됩니다. 노드는 피어 장애 또는 데이터 배포 속도 저하와 같은 변경 사항에 자동으로 반응하고 가장 적절한 방식으로 정적 구성을 변경합니다. 수천 개의 분산 노드 간의 정보 흐름을 간소화합니다.

이전 버전의 Cardano 노드에서 SPO는 50개와 같은 여러 피어에 대한 연결을 수동으로 구성해야 했습니다. 이것은 불필요하게 큰 숫자이지만 SPO가 많은 수의 노드가 오프라인 상태인 경우 최소한 그들 중 일부는 계속 사용할 수 있습니다. 노드가 네트워크의 변경 사항에 자동으로 응답할 수 있다면 20은 충분히 많은 수의 피어입니다.

노드는 3가지 유형의 피어를 구분합니다. 콜드 피어는 노드에 알려져 있지만 현재 연결이 설정되어 있지 않습니다. 웜 피어는 연결이 설정되는 노드이지만 네트워크 측정(성능 모니터링)에만 사용됩니다. 핫 피어는 합의를 위해 적극적으로 사용됩니다.

동적 P2P 설정에서 SPO는 50개가 아닌 수천 개의 SPO 릴레이(콜드 피어)에서 선택할 수 있는 피어(핫 피어)에 대한 20개의 연결을 구성하도록 대상을 지정할 수 있습니다. 그리고 오프라인이 되면 노드는 자동으로 새 연결을 선택합니다. 하나, 설정된 목표를 달성하기 위해. 따라서 구성은 더 이상 50개 피어의 정적 풀로 제한되지 않습니다.

동적 P2P 설정의 이점은 피어 선택을 최적화하여 전체 네트워크를 통한 블록 전파를 최소화한다는 것입니다. 이것은 네트워크의 변화에 따라 지속적으로 발생합니다.

IOG 팀이 수행한 연구에 따르면 로컬 수준에서 노드 구성을 최적화하면 전체 네트워크의 맥락에서 거의 이상적인 설정을 달성할 수 있습니다. 피어가 나중에 체인에서 끝나는 블록 헤더를 처음 제공하는 빈도를 측정합니다. 이 지표에서 가장 유용하지 않은(느린) 피어는 주기적으로 "제거"되고 임의로 선택된 다른 피어로 대체됩니다. 시뮬레이션은 이 간단한 방법이 최적의 네트워크 설정으로 이어져 데이터 분포와 관련하여 높은 성능을 제공한다는 것을 보여주었습니다.

자동화된 동적 최적화는 통신 지연이나 다운타임에 대한 네트워크의 탄력성을 높입니다. 또한 서비스 거부(DoS) 공격을 차단하여 보안을 강화합니다. 노드가 공격을 받으면 다른 노드는 자동으로 중단을 인식하고 설정을 다른 피어로 변경합니다.