코드 (Code)

중급암호학수정일

코드(code)는 두 가지 뜻으로 쓰입니다. 첫째, 암호학에서는 비밀 유지를 위해 단어나 구절 같은 의미 단위를 미리 정한 다른 단어, 문자, 숫자 또는 기호로 바꾸어 나타내는 체계를 말합니다. 둘째, 컴퓨터가 실행하는 프로그램 명령어, 즉 소스 코드를 말합니다. 블록체인 분야에서는 주로 두 번째 뜻으로 쓰입니다.

암호학에서의 코드: 코드와 사이퍼

암호학에서 코드는 사이퍼(cipher, 암호 알고리즘)와 구별됩니다.

  • 코드: “공격”, “내일”, “항구” 같은 단어나 구절 전체를 코드북(codebook)에 적힌 다른 기호나 숫자로 바꿉니다. 코드북을 가진 사람만 원래 뜻을 알 수 있습니다. 코드북이 유출되면 체계 전체가 무너지므로 관리가 어렵습니다.
  • 사이퍼: 의미와 관계없이 문자나 비트 단위로 일정한 알고리즘과 키를 적용해 변환합니다. 현대 암호(AES, 공개키 암호 등)는 모두 사이퍼에 해당합니다.

일상에서는 두 말을 섞어 쓰는 경우가 많지만, 엄밀히는 의미 단위를 바꾸면 코드, 기호 단위를 알고리즘으로 바꾸면 사이퍼입니다.

프로그램 코드

디지털 세계에서 코드는 사람이 컴퓨터에 일을 시키는 수단입니다. 요리법의 각 단계가 요리사에게 할 일을 알려 주듯, 코드는 컴퓨터가 이해하는 언어로 작성된 단계별 지시입니다. 블록체인 노드 소프트웨어와 스마트 컨트랙트도 모두 코드로 작성되며, 공개 블록체인의 코드는 대부분 오픈 소스로 공개되어 누구나 검토할 수 있습니다.

“코드는 법이다(Code is law)”

“코드는 법이다”는 블록체인이 늘 변하는 사람의 판단이 아니라 코드에 따라 작동해야 한다는, 암호화폐 커뮤니티에서 널리 쓰이는 격언이자 신념입니다. 시장에 정해진 거래 규칙이 있듯, 블록체인의 코드는 규칙서와 같아서 한번 배포되면 외부 간섭 없이 그대로 적용된다는 뜻입니다.

이 생각이 지지받는 이유는 다음과 같습니다.

  • 투명성: 블록체인을 관리하는 규칙이 공개되어 있어 누구나 감사할 수 있습니다.
  • 예측 가능성: 코드를 알면 시스템이 어떻게 작동할지 알 수 있습니다.
  • 불변성: 배포된 코드는 바꾸기가 매우 어려워 안정성을 높입니다.
  • 검열 저항: 어느 한 주체가 트랜잭션을 마음대로 막기 어렵습니다.

반면 한계도 지적됩니다.

  • 경직성: 필요한 경우에도 코드를 업데이트하거나 수정하기 어려울 수 있습니다.
  • 예상치 못한 버그: 과거 스마트 컨트랙트 악용 사례에서 보듯 코드 취약점은 심각한 손실로 이어질 수 있습니다.
  • 책임성 부족: 코드 결함이나 의도치 않은 결과에 대해 누가 책임질지 정하기 어려울 수 있습니다.

따라서 코드는 단순한 기술 용어처럼 보여도 암호화폐 분야에서 신뢰와 투명성의 기반이 되며, 동시에 그 한계를 함께 이해해야 하는 개념입니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.