궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

기초지식코인 기초

ERC-1271 계약 서명 검증: isValidSignature와 매직값 0x1626ba7e

ERC-1271 원문으로 계약 계정이 서명을 검증하는 함수, 성공 반환값, 상태 변경 금지 조건을 읽습니다.

난이도 입문기초 카테고리와 설명 방식 기준
ERC-1271 계약 서명 검증: isValidSignature와 매직값 0x1626ba7e 개념을 표현한 편집 일러스트
먼저 읽는 핵심

ERC-1271은 계약이 서명을 검증하는 isValidSignature 함수를 정합니다.
서명이 유효하면 매직값 0x1626ba7e를 돌려주며 상태를 바꾸면 안 됩니다.
실패 반환값은 명세에 없고 참조 구현만 0xffffffff를 씁니다.

ERC-1271은 개인키가 없는 계약도 서명을 검증할 수 있도록 isValidSignature(bytes32, bytes) 함수와 성공 시 반환값 0x1626ba7e를 정합니다. 이 글은 2026-10-27에 연 ERC-1271 원문(상태 Final)으로 확인한 범위만 다룹니다.

확인 기준일 2026-10-27 · 다음 확인 예정 2026-11-26

왜 계약에는 별도 표준이 필요했을까?

원문 Abstract는 외부 소유 계정(EOA)은 개인키로 메시지를 서명할 수 있지만 계약은 그럴 수 없다는 문제에서 출발합니다. 계약이 자신을 대신한 서명을 검증하는 표준 방법을 정합니다.

ERC-1271 명세 항목
항목 원문 내용
함수 isValidSignature(bytes32 _hash, bytes memory _signature) returns (bytes4)
성공 반환값 0x1626ba7e (MAGICVALUE)
상태 변경 금지 (solc 0.5 이전은 STATICCALL, 이후는 view)
실패 반환값 명세에 없음, 참조 구현은 0xffffffff

함수는 무엇을 받고 무엇을 돌려줄까?

함수는 32바이트 해시와 서명 바이트를 받아 bytes4 값을 돌려줍니다. 서명이 유효하면 반드시 0x1626ba7e를 돌려줘야 하고, 상태를 바꾸면 안 됩니다. 실패 때 돌려줄 값은 명세에 정해져 있지 않고 참조 구현이 0xffffffff를 씁니다. 불리언 대신 특정 값을 쓰는 이유는 더 엄격하고 단순한 검증을 위해서라고 원문이 설명합니다.

앱과 지갑은 어떻게 이용할까?

계약 지갑이 서명 로그인에 쓰이는 과정은 이더리움으로 로그인(SIWE) 서명은 무엇을 승인하나: ERC-4361 메시지 읽는 법 글에, 권한 구조는 계정 추상화란? 스마트 계정의 권한과 수수료 구조 글에 있습니다. 서명 자체가 유효해도 어떤 권한을 주는 내용인지는 별도로 읽어야 합니다.

호출하는 쪽은 무엇을 지켜야 할까?

검증을 요청하는 쪽은 서명자 계약의 isValidSignature를 호출해 반환값이 정확히 0x1626ba7e인지 비교하면 됩니다. 원문이 상태 변경을 금지하므로 이 호출은 읽기 전용으로 부를 수 있습니다. 반환값이 매직값과 다르면 모두 실패로 취급하는 것이 단순하고 엄격한 방식이며, 이것이 불리언 대신 특정 값을 쓴 취지입니다. 다만 계약 내부에서 서명 유효 조건을 어떻게 정하는지는 계약마다 다르므로, 같은 서명이 어느 계약에서는 통과하고 다른 계약에서는 거절될 수 있습니다.

이 글에서 확인하지 못한 것은?

계약 지갑이 서명을 어떻게 구성하는지, 여러 서명자가 필요한 경우의 검증 방식, 호출 가스 한도는 원문이 정하지 않아 적지 않았습니다. 이후 확장된 서명 검증 표준이 있는지도 이번에 확인하지 않았습니다. 이 글은 원문 Specification과 Rationale에 적힌 범위로 한정합니다. 정리하면 이 표준은 계약이 서명 질문에 답하는 공통 창구이고, 답은 매직값 하나로 통일되어 있습니다. 반환값이 다르면 유효하지 않은 서명으로 읽는 것이 원문의 취지에 맞습니다. 상태는 Final, 작성일은 2018-07-25입니다.

자주 묻는 질문

계약 지갑 서명도 ecrecover로 확인하나요?

ecrecover는 EOA 서명용입니다. 계약에는 이 표준의 함수를 호출해 매직값을 확인합니다.

반환값이 true가 아니라 0x1626ba7e인 이유는요?

원문은 특정 값을 쓰면 검증이 더 엄격하고 단순해진다고 설명합니다.

이 표준이 서명 방식을 정해 주나요?

아닙니다. 계약이 서명을 어떻게 검증할지는 구현에 맡기고 호출 인터페이스만 정합니다.

참고한 원문 자료

자료 확인 기준일 2026.10.27
  1. ERC-1271 Standard Signature Validation Method for Contracts — eips.ethereum.orgeips.ethereum.org
작성 방식과 확인 범위
출처 수집
원문 링크 1개 제공
작성·확인
공식 기관 자료를 근거로 AI 도구를 활용해 작성했고, 운영자가 발행 전에 읽어 확인합니다.
전문가 검토
세무·법률 전문가 검토는 거치지 않았습니다.

투자·세무 판단은 전문가와 상의하세요. 제도와 거래소 안내는 바뀔 수 있으니 원문의 적용 대상과 최신 안내를 함께 확인해 주세요.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙 보기 →이 기사 정정 제보 →