Bitcoin의 엔지니어링 트레이드오프는 인센티브, 위협 모델, 단순성을 통해 악의적 행위자가 적극적으로 공격할 때에도 시스템을 동작하게 하는 방법을 보여줍니다.

대부분의 시스템은 낯선 사람을 위해 만들어집니다. 알 수 없는 사람이 가입하고, 메시지를 보내고, 가치를 옮기고, 투표하게 허용하는 순간, 그들은 서로를 신뢰하지 않고 협력해야 합니다.
그것이 Bitcoin이 해결하려던 문제입니다. 단순한 '멋진 암호학'이 아닙니다. 누군가 규칙을 어기려 할 때도 계속 작동하도록 만드는 엔지니어링 트레이드오프에 관한 것입니다.
적대자는 단지 “해커”만이 아닙니다. 당신의 가정이 깨졌을 때 이득을 얻는 누구든 포함됩니다: 무료 보상을 노리는 사기꾼, 관심을 원하는 스패머, 영향력을 사려는 뇌물 제공자, 또는 당신의 서비스를 신뢰할 수 없게 보이게 하려는 경쟁자 등입니다.
목표는 공격을 절대 당하지 않는 시스템을 만드는 것이 아닙니다. 목표는 공격을 받는 동안에도 시스템을 쓸 수 있고 예측 가능하게 유지하며, 남용을 충분히 비용이 들게 만들어 대부분의 사람이 정직한 경로를 선택하게 만드는 것입니다.
유용한 습관은 질문하는 것입니다: 누군가에게 이 기능을 악용할 명백한 이익을 준다면, 그들은 무엇을 할까? 편집증이 필요하지 않습니다. 인센티브는 좋은 의도보다 강합니다.
오픈 시스템에서는 자동화와 스팸, 엣지 케이스 타이밍 트릭(경쟁 조건, 재전송 시도, 이중 지불), 많은 신원으로 다수 사용자인 척하는 Sybil 행위, 내부 공모, 신뢰를 떨어뜨리려는 혼란 캠페인 같은 패턴이 빠르게 나타납니다.
작은 제품에서도 이런 문제가 생깁니다. 리뷰 게시에 대해 포인트를 주는 프로그램을 상상해보세요. 포인트를 사람이 검증할 수 있는 속도보다 빨리 청구할 수 있다면 봇이 그 포인트를 대량으로 채굴할 것입니다. 처벌이 약하면 가장 싼 전략은 ‘먼저 악용하고 나중에 사과하기’가 됩니다.
Bitcoin에서 얻는 실용적 교훈은 간단합니다: 위협 모델을 정의하고, 현실적으로 방어할 수 있는 것을 결정하며, 핵심 규칙을 압박을 받을 때 감사할 수 있을 만큼 충분히 단순하게 유지하세요.
Bitcoin은 2008-2009년의 인터넷을 위해 설계되었습니다: 가정용 컴퓨터, 제한된 대역폭, 불안정한 연결, 느린 링크로 소프트웨어를 다운로드하는 낯선 사람들. 또한 신뢰할 수 있는 가입 절차나 누구인지 확실히 알 방법이 없는 환경에서도 작동해야 했습니다.
핵심 문제는 말하기는 쉬웠지만 만들기는 어려웠습니다: 은행 없이 누구에게나 보낼 수 있는 디지털 현금을 만들되, 송금자가 동일한 코인을 두 번 쓰지 못하게 하라. 이전의 많은 디지털 머니 시스템은 원장을 정직하게 유지할 중앙 운영자에 의존했습니다. Bitcoin의 목표는 신원 확인이나 허가된 멤버십으로 대체하지 않고 그 의존성을 제거하는 것이었습니다.
그래서 창시자의 신원은 설계가 전제로 하는 가정보다 덜 중요합니다. 시스템이 창립자, 회사, 소수의 관리자에 대한 신뢰 때문에만 작동한다면 그것은 진정한 의미의 탈중앙화가 아닙니다. Bitcoin은 누구나 자신의 기계에서 검증할 수 있는 규칙으로 신뢰를 선택적으로 만들려고 했습니다.
Bitcoin은 단일 실패 지점이나 단일 압력 지점을 만드는 패턴을 피했습니다:
이 선택들은 시스템의 강점과 한계를 형성했습니다. 강점은 아무나 신뢰할 사람이 없어도 참여하고 검증할 수 있다는 점입니다. 한계는 많은 독립 노드가 실행할 수 있을 만큼 시스템을 단순하게 유지해야 한다는 점이며, 이는 처리량, 저장 성장, 규칙 복잡성에 압력이 됩니다.
제약을 실용적으로 보는 방법 중 하나: 낯선 사람에게 “모든 결제를 스스로 검증할 수 있다”고 약속하면 숨겨진 데이터베이스, 고객지원 결정, 사적 감사에 의존할 수 없습니다. 규칙은 네트워크가 적대적이고 일부 참가자가 적극적으로 속이려 할 때도 유지되어야 합니다.
Bitcoin의 보안은 경비원이나 계약으로 지불되지 않습니다. 규칙을 따름으로써 누구나 얻을 수 있는 보상으로 지불됩니다. 이것이 핵심적인 엔지니어링 트레이드오프 중 하나입니다: 보안 문제의 일부를 사업 문제로 바꾸세요.
채굴자는 전기와 하드웨어에 실제 돈을 씁니다. 그 대가로 네트워크는 신규 발행 코인(블록 보조금)과 트랜잭션 수수료를 제공합니다. 채굴자가 다른 노드가 수락하는 유효한 블록을 만들면 보상을 받습니다. 유효하지 않은 블록을 만들면 노드가 거부하므로 아무것도 얻지 못합니다. 대부분의 부정행위는 기본적으로 수익성이 없게 됩니다.
“정직한” 행동이 수익성 있는 기준선이 되는 이유는 예측 가능하고 꾸준한 지급을 얻는 가장 쉬운 방법이기 때문입니다. 합의 규칙을 따르는 것은 예측 가능합니다. 규칙을 깨려는 시도는 다른 사람들이 다른 기록을 받아들일 것이라는 도박인데, 조율하기 어렵고 실패하기 쉽습니다.
인센티브 구조는 시간이 지남에 따라 변합니다. 대략 4년마다 보조금은 반으로 줄어듭니다. 그러면 수수료가 보안 예산의 더 큰 부분을 맡아야 합니다. 실제로는 사용자가 제한된 블록 공간을 두고 경쟁하는 수수료 시장으로 시스템을 밀어넣고, 채굴자는 어떤 트랜잭션을 언제 포함할지 더 주의하게 됩니다.
인센티브는 이상에서 벗어날 수 있습니다. 채굴은 규모의 경제와 풀링을 통해 중앙화될 수 있습니다. 단기 수익이 장기적 신뢰보다 우선할 수 있습니다. 일부 공격은 유효하지 않은 블록을 필요로 하지 않습니다. 예를 들어 블록을 보류하여 우위를 얻는 전략 같은 것이 있습니다. 검열 인센티브는 뇌물이나 규제를 통해 나타날 수도 있습니다.
구체적인 사고 방식: 채굴자가 해시파워의 5%를 가지고 있다면, 안정적 수입을 얻는 가장 좋은 방법은 보통 공유 경쟁에 남아 확률적으로 보상을 얻는 것입니다. 역사를 다시 쓰려는 어떤 계획도 실제 자원을 소비하게 하고, 다른 사람들이 단순히 그들을 앞지를 위험이 있습니다.
설계교훈은 단순합니다: 원하는 행동에 비용을 지불하고, 규칙 위반을 비싸게 만들며, 참가자들이 ‘올바른 행동’을 하기보다는 이익을 최적화할 것이라고 가정하세요.
친구가 아니라 모르는 사람을 위해 설계하세요. 누군가가 규칙을 깨서 이득을 볼 거라고 가정(스팸, 사기, 공모, 서비스 거부 등)한 뒤, 정직한 경로가 가장 싸고 쉬운 방법이 되게 만드세요.
유용한 질문은: “이 기능을 악용하도록 돈을 준다면, 그들이 가장 먼저 무엇을 할까?” 입니다.
위협 모델은 짧은 목록입니다:
작고 구체적으로 유지하면 실제로 개발하면서 활용할 수 있습니다.
오픈 시스템에서는 신원이 싸기 때문에 한 사람이 수천 개 계정을 만들 수 있습니다. 영향력이 '사용자 수'에 기반하면 공격자는 가짜 사용자로 이기게 됩니다.
Bitcoin은 영향력을 **작업 증명(proof-of-work)**에 묶어 현실 비용을 요구했습니다. 교훈은 “마이닝을 써라”가 아니라: 위력을 조작하기 어려운 무언가(비용, 스테이크, 시간, 검증된 노력, 희소 자원)에 기반하라 입니다.
채굴자는 다른 노드가 받아들이는 블록을 생성할 때 보상을 받습니다. 규칙을 어기면 노드가 그 블록을 거부하고 채굴자는 아무 보상도 못 받습니다.
이로써 규칙을 따르는 것이 꾸준한 수익을 얻는 가장 쉬운 방법이 됩니다. 규칙을 깨려는 시도는 다른 사람들이 다른 이력을 받아들일 것이라는 둔한 도박이 되어, 조율도 어렵고 실패 확률이 큽니다.
51% 공격자는 보통 다음을 할 수 있습니다:
하지만 그들은 개인 키 없이 거래에 서명하거나, 임의로 동전을 만들어낼 수는 없습니다. 핵심 교훈은: 공격자가 무엇을 바꿀 수 있는지 정확히 정의하고 그 경계에 맞춰 설계하라는 것입니다.
모든 공격이 규칙을 '깨는' 건 아닙니다. 일부 공격은 피해자가 무엇을 보느냐나 무엇을 할 수 있느냐를 통제하는 것입니다.
일반적 예시:
제품팀에게 유사한 개념은 속도 제한, 남용 스로틀링, 부분적 장애와 재시도를 설계하는 것입니다.
기능이 많을수록 예외가 늘고, 예외가 취약점의 서식지가 됩니다(재전송, 경쟁 상태, 이상한 상태 전이). 단순한 규칙은:
복잡성을 추가해야 한다면 엄격한 한계와 명확한 불변 조건으로 감싸세요.
세 가지 기본 조치로 시작하세요:
예: 추천 보상은 단순 가입 후가 아니라 실제 활동 이후에 언락하고, 의심스러운 패턴은 자동으로 보상을 일시정지하세요.
흔한 실패 사례:
규칙을 명확하게 설명할 수 없다면 방어할 수 없다는 규칙을 기억하세요.
훈련용으로 규율을 강제하는 도구로 사용하세요. 실용적 워크플로:
목표는 누군가 적극적으로 시스템을 깨려고 해도 예측 가능하게 유지되는 제품입니다.