용어집 / 노드와 소프트웨어
DNS 시드
- DNS 시드란 무엇입니까?
- DNS 시드는 접속 가능한 비트코인 노드의 IP 주소를 응답하는 도메인 이름으로, 새로 설치한 노드가 첫 연결을 맺을 수 있는 곳을 제공합니다.
비트코인에는 디렉터리 서버가 없으므로 새 소프트웨어는 물어보는 방식으로 네트워크를 찾아야 합니다. Bitcoin Core는 소스 코드에 하드코딩된 짧은 시드 호스트 이름 목록을 포함하고 있으며, 이를 한 번 확인하고 포트 8333에서 아웃바운드 연결 8개를 열면 그 뒤로는 이 이름들을 더 이상 사용하지 않습니다. 첫 핸드셰이크 이후의 모든 정보는 피어로부터 직접 학습합니다.
작동 방식
각 시드 호스트 이름 뒤에는 정적 파일이 아니라 크롤러가 있습니다.
운영자는 피어 투 피어 네트워크를 순회하면서 알게 된 모든 주소에 연결을 시도하고 최근에 응답한 주소를 기록하는 소프트웨어를 실행합니다. 그러면 호스트 이름은 그 풀에서 뽑은 A 및 AAAA 레코드로 확인되며, 질의 한 번당 수십 개의 주소가 반환되고 응답이 계속 순환하도록 TTL은 짧게 설정됩니다. 일부 시드는 서비스 비트별 필터링도 지원하므로, 컴팩트 블록 필터를 제공하는 피어가 필요한 노드는 그러한 피어만 반환하는 하위 도메인을 질의할 수 있습니다.
호스트 이름은 Bitcoin Core의 소스 중 kernel/chainparams.cpp에 있으며 네트워크마다 별도의 목록이 있습니다. 메인넷 목록은 이름이 공개된 개인들이 유지합니다. seed.bitcoin.sipa.be는 Pieter Wuille가, dnsseed.bluematt.me는 Matt Corallo가, seed.btc.petertodd.net은 Peter Todd가 운영합니다. 목록을 짧고 출처가 분명하게 유지하는 것은 의도된 일인데, 시드 운영자가 여러분이 만나게 될 상대를 선택하기 때문입니다.
노드는 처음 실행될 때 이 이름들을 확인하고 주소 관리자를 채운 뒤, 전체 릴레이 아웃바운드 연결 8개와 블록만 릴레이하는 연결 2개를 엽니다. 블록만 릴레이하는 연결은 트랜잭션 전파를 하지 않으며 감시자가 알아채기 더 어렵습니다. 그 뒤로는 getaddr 및 addr 메시지를 통해 주소를 수집하여 peers.dat에 캐시하므로, 이후 재시작 시에는 조회를 완전히 건너뜁니다. 모든 시드에 접속할 수 없다면 Core는 바이너리에 컴파일된 고정 노드 주소 목록으로 대체하며, dnsseed=0과 이미 신뢰하는 피어를 가리키는 seednode 또는 addnode 항목으로 이 전체 메커니즘을 우회할 수 있습니다.
확인할 수 있는 곳
대부분의 사용자가 DNS 시드를 알아차리는 유일한 순간은 노드의 디버그 로그 첫 몇 줄입니다.
peers.dat가 없는 기기에서 bitcoind를 실행하면 로그에 DNS 시드에서 주소를 불러오고 있다는 기록이 남고, 이어서 연결 수가 0에서부터 올라갑니다. 터미널에서 dig로 직접 같은 조회를 할 수 있으며, 그러면 노드가 받게 될 것과 동일한 순환 IP 주소 집합이 반환됩니다.
알아 둘 만한 프라이버시 비용이 있습니다. 이 조회는 암호화되지 않은 일반 DNS 질의이므로, 질의가 여러분의 지갑이나 잔액에 관해 아무것도 드러내지 않더라도 여러분의 리졸버와 인터넷 제공자는 여러분의 연결에서 비트코인 노드가 시작되고 있음을 알 수 있습니다. 이것이 신경 쓰인다면 Tor를 통해 노드를 실행하거나 dnsseed=0을 설정하고 첫 피어를 직접 제공하십시오.
신뢰 문제는 겉보기보다 좁습니다. 적대적인 시드는 블록이나 트랜잭션을 위조할 수 없는데, 여러분의 노드가 수신하는 모든 것을 자체적인 규칙 사본에 비추어 검증하기 때문입니다. 그것이 할 수 있는 일은 자기가 통제하는 주소만 반환하여 여러분을 정직한 네트워크로부터 고립시키는 것인데, 그래서 Core는 여러 시드에 질의하고 연결을 서로 다른 네트워크 대역에 분산하며 그러한 블록만 릴레이하는 링크를 조용한 제2의 의견으로 유지합니다.
DNS 시드 vs 시드 문구
DNS 시드는 피어를 찾기 위한 공개 호스트 이름이고, 시드 문구는 여러분의 코인을 관리하는 12개 또는 24개의 비밀 단어입니다. 두 가지는 단어 하나만 공유할 뿐입니다. DNS 시드에 관해 비밀스러운 것은 없고, 그것은 여러분의 지갑과 아무 관련이 없으며, 어떤 정당한 설정 단계도 여러분에게 복구 단어를 네트워크 설정 화면에 입력하라고 요구하지 않습니다.