# 메시지 (Message)

**메시지**는 일반적으로 직접 연락할 수 없는 수신자에게 보내거나 남기는 구두·서면·녹음된 의사 전달을 뜻하지만, 암호학과 블록체인에서는 더 좁은 기술적 의미로 쓰입니다. 암호학에서 메시지는 암호화·해시·서명·인증 같은 연산에 입력되는 데이터이고, 이더리움에서는 계정 사이에 데이터와 이더 값을 전달하는 내부 호출을 가리킵니다.

## 암호학에서의 메시지

암호학 문헌에서는 보통 메시지를 기호 *m*으로 표기하며, 내용과 상관없이 임의 길이의 비트열로 다룹니다.

- **암호화:** 평문 메시지 m을 키로 암호화해 암호문 c를 만들고, 복호화하면 다시 m을 얻습니다.
- **해시 함수:** 임의 길이의 m을 고정 길이 다이제스트 H(m)으로 압축합니다. m이 한 비트만 바뀌어도 다이제스트가 완전히 달라집니다.
- **디지털 서명:** 서명자는 개인 키로 m(실제로는 보통 H(m))에 대한 서명을 만들고, 누구나 공개 키로 그 서명이 m에 대해 유효한지 검증할 수 있습니다. 비트코인과 이더리움의 트랜잭션 서명도 트랜잭션 데이터를 메시지로 삼습니다.
- **메시지 인증 코드(MAC):** 공유 비밀 키로 m의 태그를 계산해, 메시지가 도중에 바뀌지 않았고 키를 가진 상대가 보냈음을 확인합니다.

지갑에서 로그인이나 소유권 증명을 위해 “메시지에 서명”하라고 요청하는 경우도 같은 의미입니다. 이 경우 서명 대상은 트랜잭션이 아닌 일반 메시지여야 하지만, 악성 사이트가 트랜잭션이나 승인 데이터를 메시지처럼 보이게 만들 수 있으므로 서명 전에 내용을 확인해야 합니다.

## 이더리움에서의 메시지

이더리움 백서는 메시지를 계정 사이에 전달되는 가상 객체로 설명합니다. 메시지는 보내는 쪽, 받는 쪽, 전송할 이더 값, 선택적 데이터(바이트열), 사용할 수 있는 가스 한도로 구성됩니다.

1. 외부 소유 계정(EOA)은 개인 키로 서명한 트랜잭션을 보내며, 이 트랜잭션이 첫 번째 메시지 호출을 일으킵니다.
2. 컨트랙트는 코드 실행 중 CALL 같은 명령으로 다른 계정에 메시지를 보낼 수 있습니다. 이렇게 생긴 메시지는 블록에 별도 트랜잭션으로 직렬화되지 않고 실행 환경 안에서만 존재하므로, 블록 탐색기에서는 흔히 ‘내부 트랜잭션’으로 표시됩니다.

즉 트랜잭션은 서명되어 블록에 기록되는 외부 입력이고, 메시지는 그 실행 과정에서 계정 간에 오가는 호출입니다. 메시지 호출의 결과는 상태 변화로 블록체인에 반영됩니다.

---
출처: https://achivx.kr/glossary/message-%EB%A9%94%EC%8B%9C%EC%A7%80/ · ACHIVX 용어 사전 · 수정일 2026-10-20
