
직접 노드를 돌리는 일, 그리고 대부분에게는 필요 없는 까닭
지갑이 잔액을 보여 줄 때마다, 그것은 어떤 서버가 해 준 말을 되풀이하고 있습니다. 당신이 보는 것은 블록체인이 아닙니다. 블록체인에 관한 물음에 한 컴퓨터가 내놓은 답을 보고 있고, 그 답을 믿음으로 받아들이고 있습니다.
직접 노드를 돌리는 것은 그 일을 그만두는 방법입니다. 흔히 듣는 것보다 품이 더 들고, 대부분의 사람에게는 정말로 필요 없기도 합니다. 둘 다 참이고, 흥미로운 것은 당신이 그 선의 어느 쪽에 서 있는지 가려내는 일입니다.
노드란 실제로 무엇인가
노드는 블록체인을 내려받아 모든 규칙을 스스로 확인합니다. 서명은 유효했는가? 무언가가 두 번 쓰였는가? 각 블록이 난이도 목표를 맞췄는가? 코인베이스가 올바른 보상을 지급했는가?
그것은 채굴이 아닙니다. 채굴은 새 블록을 만들어 내는 경쟁입니다. 노드는 검증만 할 뿐이고, 이 구분이 중요한 것은 당신에게 무엇이 참인지를 정하는 부분이 바로 검증이기 때문입니다.
요점은 이것입니다. 노드를 돌리면, 거래가 유효한지 아무에게도 묻지 않습니다. 당신의 기계가 규칙에서 그것을 끌어냅니다. 어떤 블록이 규칙을 어겼다면 당신의 노드는 그것을 거부합니다 — 다른 몇 명이 받아들였든, 어떤 탐색기가 뭐라고 하든 상관없이.
실제로 얻는 세 가지
검증. 합의를 스스로 확인합니다. 그것이 가장 중요해지는 때는 바로 가장 불편한 때입니다. 다툼이 있는 분기, 체인 분열, 합의 결함의 한가운데요. Ravencoin의 합의 붕괴는 "탐색기가 뭐라 하는가"와 "규칙이 뭐라 하는가"가 잠시 갈라질 수 있는 부류의 사건입니다. 노드는 어느 체인을 따를지 결코 짐작할 필요가 없습니다.
프라이버시 — 그리고 이것이 과소평가되는 쪽입니다. 지갑이 공개 서버에 잔액을 물을 때, 그 서버에 어떤 주소가 당신 것인지 알려 줍니다. 더 나쁘게도, 확장 공개 키로 동기화하는 지갑은 그 계정이 앞으로 쓸 모든 주소를 끌어낼 능력을 넘겨줍니다 — 체인 위 프라이버시가 피함으로써 성립하는 바로 그 연결이죠. 자기 노드에 물으면 알려 줄 상대가 아무도 없습니다. 스스로에게 묻고 있는 것입니다.
아무도 거절할 수 없는 전파. 당신의 노드는 거래를 떨어뜨릴 수도 있는 서비스에 맡기는 대신, 피어 투 피어 망에 곧장 알립니다.
비용, 정직하게
저장 공간. 이력을 보존하는 완전한 비트코인 노드는 수백 기가바이트를 차지하고 해마다 커집니다. 가지치기로 크게 줄일 수 있지만, 가지치기한 노드는 이력을 버렸기에 재검색이 제한되고 인덱서를 먹여 살릴 수 없습니다.
초기 동기화. 제네시스 블록부터 체인을 검증하는 데 좋은 장비로는 몇 시간, 느린 디스크의 라즈베리 파이로는 며칠이 걸립니다. 한 번만 하면 되지만 정말로 지루합니다.
가동과 관리. 꺼진 노드는 뒤처진 노드입니다. 돌아오면 따라잡지만, 그동안 지갑은 기다리거나 다른 사람의 서버에 기댑니다. 소프트웨어는 갱신해야 하고, 디스크는 차오르며, 합의 변경이 나옵니다.
아무도 말하지 않는 고장 방식. 방치된 노드는 노드가 없는 것보다 나쁩니다. 몇 주 뒤처져 있거나, 조용히 멈춰 있거나, 다른 모두가 받아들인 소프트 포크를 거부한 판본으로 돌고 있다면, 자신만만하게 틀린 답을 내놓습니다. 자기 검증은 검증하는 쪽이 건강할 때만 도움이 됩니다.
정직한 결론
대부분의 사람은 노드를 돌리지 않는 편이 낫고, 그것은 부끄러운 일이 아닙니다.
이점은 얼마나 보유하는지, 얼마나 자주 거래하는지, 어떤 주소가 당신 것인지 제삼자에게 알리지 않는 일을 얼마나 중요하게 여기는지에 따라 커집니다. 수수한 금액을 쥐고 몇 달에 한 번 거래를 보내는 사람에게 노드는 취미입니다 — 흥미로운 취미이긴 하지만, 들인 수고에 걸맞은 보안 향상은 아닙니다.
정말로 값어치가 생기는 것은, 잃으면 뼈아플 금액을 쥐고 있을 때, 제삼자가 당신 활동의 실상을 그려 낼 만큼 자주 거래할 때, 규제나 운영상의 이유로 독립적으로 검증해야 하는 사업을 할 때, 아니면 그저 기반 시설을 빌리기보다 소유하려는 사람일 때입니다.
자기 보관에는 노드가 반드시 필요하다고 말하는 사람은 부풀리는 것입니다. 노드가 아무것도 바꾸지 않는다고 말하는 사람은 깎아내리는 것입니다. 그것은 정해진 값으로 정해진 것들을 사며, 그 셈은 사람마다 다릅니다.
SSP가 실제로 해 주는 것
여기서부터 이 이야기가 이론이 아니라 구체가 됩니다.
SSP는 당신을 우리 기반 시설에 묶어 두지 않습니다. 설정에서 체인마다 백엔드를 덮어쓸 수 있습니다 — node, api, explorer 모두 편집할 수 있고, 지갑은 실행 중에 당신의 덮어쓰기 값을 기본값 위에 얹습니다. 구현에는 깔끔한 세부가 하나 있습니다. 저장한 값이 출하 기본값과 똑같으면 저장되는 대신 저장소에서 지워지므로, 덮어쓰기 저장소에는 진짜 변경만 남습니다.
그러니 직접 기반 시설을 운영한다면, SSP를 거기로 향하게 하고 우리 것에 묻기를 그만둘 수 있습니다.
이제 정직한 단서입니다. 실재하는 이야기니까요. UTXO 체인에서 SSP는 맨 노드가 아니라 Blockbook 방식의 인덱서와 대화합니다. bitcoind만 돌려서는 부족하고, 그 위에 Blockbook 인덱싱까지 필요한데, 이는 평범한 풀 노드보다 무겁습니다. 디스크도, 설정도, 관리할 것도 더 많습니다. EVM 체인은 문턱이 낮아서, 자기 RPC 엔드포인트를 가리키는 일이 직접 교체에 더 가깝습니다.
"자기 노드를 쓸 수 있다"와 "자기 노드를 쓰기 쉽다" 사이에는 실질적인 간극이 있고, 우리는 설정 칸 하나가 실제보다 매끄러운 길을 넌지시 풍기게 두느니 그 간극을 이름 붙여 말하는 쪽을 택합니다.
하나 더 분명히 하자면, 직접 노드를 돌려 바뀌는 것은 체인 데이터 서버가 보는 것입니다. 두 기기가 조율할 때 릴레이가 다루는 것은 바뀌지 않습니다. 따로 답을 가진 따로의 물음이고, 하나를 풀어도 다른 하나는 풀리지 않습니다.
시도해 보고 싶다면
전부가 아니라 가장 아끼는 체인부터 시작하십시오. 켜 둬도 괜찮은, 진짜 SSD를 단 기계를 쓰십시오 — 회전식 디스크에서의 초기 동기화는 정말 고통스럽습니다. 무언가를 맡기기 전에 완전히 동기화되게 두십시오. 그다음 지갑 하나를 그쪽으로 향하게 하고 차이를 느끼는지 보십시오.
못 느낄 수도 있고, 그것은 정당한 결과입니다. 자신의 위협 모형에 대해 구체적인 무언가를 배우게 될 것이고, 그것은 출발점의 추상보다 값집니다.
노드를 한 번도 돌리지 않더라도 바탕의 생각은 간직할 값어치가 있습니다. 당신이 본 모든 잔액은 어딘가에서 왔고, 누군가의 서버가 그것을 만들었습니다. 체인을 보고 있다고 믿는 대신 답을 믿고 있음을 아는 것 — 그것이 값어치의 대부분입니다. 노드를 돌리는 것은 그만둘 수 있는 선택지일 뿐입니다.


