메시지 (Message)
메시지는 일반적으로 직접 연락할 수 없는 수신자에게 보내거나 남기는 구두·서면·녹음된 의사 전달을 뜻하지만, 암호학과 블록체인에서는 더 좁은 기술적 의미로 쓰입니다. 암호학에서 메시지는 암호화·해시·서명·인증 같은 연산에 입력되는 데이터이고, 이더리움에서는 계정 사이에 데이터와 이더 값을 전달하는 내부 호출을 가리킵니다.
암호학에서의 메시지
암호학 문헌에서는 보통 메시지를 기호 m으로 표기하며, 내용과 상관없이 임의 길이의 비트열로 다룹니다.
- 암호화: 평문 메시지 m을 키로 암호화해 암호문 c를 만들고, 복호화하면 다시 m을 얻습니다.
- 해시 함수: 임의 길이의 m을 고정 길이 다이제스트 H(m)으로 압축합니다. m이 한 비트만 바뀌어도 다이제스트가 완전히 달라집니다.
- 디지털 서명: 서명자는 개인 키로 m(실제로는 보통 H(m))에 대한 서명을 만들고, 누구나 공개 키로 그 서명이 m에 대해 유효한지 검증할 수 있습니다. 비트코인과 이더리움의 트랜잭션 서명도 트랜잭션 데이터를 메시지로 삼습니다.
- 메시지 인증 코드(MAC): 공유 비밀 키로 m의 태그를 계산해, 메시지가 도중에 바뀌지 않았고 키를 가진 상대가 보냈음을 확인합니다.
지갑에서 로그인이나 소유권 증명을 위해 “메시지에 서명”하라고 요청하는 경우도 같은 의미입니다. 이 경우 서명 대상은 트랜잭션이 아닌 일반 메시지여야 하지만, 악성 사이트가 트랜잭션이나 승인 데이터를 메시지처럼 보이게 만들 수 있으므로 서명 전에 내용을 확인해야 합니다.
이더리움에서의 메시지
이더리움 백서는 메시지를 계정 사이에 전달되는 가상 객체로 설명합니다. 메시지는 보내는 쪽, 받는 쪽, 전송할 이더 값, 선택적 데이터(바이트열), 사용할 수 있는 가스 한도로 구성됩니다.
- 외부 소유 계정(EOA)은 개인 키로 서명한 트랜잭션을 보내며, 이 트랜잭션이 첫 번째 메시지 호출을 일으킵니다.
- 컨트랙트는 코드 실행 중 CALL 같은 명령으로 다른 계정에 메시지를 보낼 수 있습니다. 이렇게 생긴 메시지는 블록에 별도 트랜잭션으로 직렬화되지 않고 실행 환경 안에서만 존재하므로, 블록 탐색기에서는 흔히 ‘내부 트랜잭션’으로 표시됩니다.
즉 트랜잭션은 서명되어 블록에 기록되는 외부 입력이고, 메시지는 그 실행 과정에서 계정 간에 오가는 호출입니다. 메시지 호출의 결과는 상태 변화로 블록체인에 반영됩니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.