non custodial

EIP-712란? 서명된 주문이 내 자금을 지키는 방식

EIP-712를 쓰면 알아볼 수 없는 16진수 대신 읽을 수 있는 구조화 데이터에 서명합니다. 논커스터디얼 거래를 안전하고 검증 가능하게 만드는 구조를 설명합니다.

POTS Team ·
  • #eip-712
  • #signatures
  • #non-custodial
  • #security

논커스터디얼 거래는 모두 하나의 행위 위에 서 있습니다. 메시지에 서명하는 일이죠. EIP-712는 그 서명을 안심하고 건넬 수 있게 만드는 Ethereum 표준입니다. 읽을 수 있고, 범위가 정해져 있고, 조작할 수 없습니다. 암호학 전문 용어 없이 구조를 설명해 보겠습니다.

EIP-712가 푼 문제

초기 암호화폐 서명은 위험했습니다. 지갑이 내미는 건 알아볼 수 없는 16진수 덩어리. 10달러 거래를 승인하는 건지, 지갑을 비우는 허가를 내주는 건지 알 방법이 없었습니다. 이른바 블라인드 서명입니다. 악성 앱은 바로 그 점을 노렸습니다.

EIP-712는 타입이 지정된 구조화 데이터에 서명하게 만들어 이 문제를 풀었습니다. 항목마다 이름이 붙은 메시지라서, 지갑이 평범한 말로 보여 줄 수 있습니다. 0x9fa3... 대신, 승인하기 전에 실제 주문, 즉 토큰, 가격, 수량, 매매 방향이 보입니다.

거래할 때 무엇에 서명하나

Pots Market 같은 논커스터디얼 플랫폼에서 주문을 내면, 지갑에 구조화된 주문이 표시되고 나는 그것에 개인 키로 서명합니다. 그 서명이 승인하는 건 그 주문뿐, 다른 건 아무것도 아닙니다.

Order
  token:  YES (Will event X happen?)
  side:   BUY
  price:  0.62
  size:   100
  maker:  0xYourAddress

안전을 떠받치는 성질은 세 가지입니다.

  1. 읽을 수 있음: 실제 조건이 보이니, 엉뚱한 것에 서명하게 될 일이 없습니다.
  2. 범위가 정해져 있음: 서명이 유효한 건 이 주문 항목뿐. 하나라도 바꾸면 서명은 무효가 됩니다.
  3. 도메인에 묶임: EIP-712에는 “도메인”(체인, 컨트랙트, 앱)이 들어가서, 어떤 컨트랙트용 서명을 다른 컨트랙트에서 다시 쓸 수 없습니다.

거래가 논커스터디얼이 되는 이유

주문은 내 키로 서명되고 온체인에서 검증되므로, 어떤 중개자도 바꿀 수 없습니다. 앱은 서명된 주문을 결제 컨트랙트로 전달하지만, 가격을 바꾸거나, 매매를 뒤집거나, 수량을 부풀릴 수 없습니다. 한 군데라도 건드리면 서명이 깨지니까요. 자금을 맡지도 않고, 결제는 온체인에서 바로 이뤄집니다. 이것이 모델 전체를 논커스터디얼로 만듭니다.

Pots Market에서는 주문이 Polygon의 Polymarket 감사받은 CTF Exchange에서 결제되고, 주문마다 온체인 귀속 코드가 붙습니다. 그래서 제대로 거쳤다고 믿는 대신, 직접 확인할 수 있습니다.

그래도 조심할 것

EIP-712가 지키는 건 주문이지, 지갑 전체가 아닙니다.

  • 서명 화면은 매번 읽기. 표준 덕분에 조건이 보이게 되어 있습니다. 실제로 훑어보세요.
  • 도메인 확인하기. 컨트랙트나 앱이 거래하려는 곳과 맞는지 봅니다.
  • 오래된 승인은 취소하기. 토큰 승인은 주문 서명과 별개입니다. 정기적으로 점검하세요.

정리

EIP-712는 위험한 블라인드 서명을 읽을 수 있고 조작할 수 없는 승인으로 바꿨습니다. 자산을 맡기지 않고 거래할 수 있는 건 이 수수한 표준 덕분입니다. 내가 의도한 그대로에 서명하고, 체인이 그걸 지키게 하는 것. 전체 그림에서 어디에 놓이는지는 Pots Market 보안 모델에서 확인할 수 있습니다.

자주 묻는 질문

01 EIP-712란 무엇인가요?
EIP-712는 타입이 지정된 구조화 데이터에 서명하기 위한 Ethereum 표준입니다. 읽을 수 없는 16진수 덩어리에 내용도 모른 채 서명하는 대신, 승인 전에 지갑이 실제 주문 항목(토큰, 가격, 수량, 매매 방향)을 평범한 말로 보여 줍니다.
02 EIP-712가 예전 서명 방식보다 안전한 이유는?
예전 방식은 읽을 수 없는 16진수를 승인하게 했습니다. EIP-712는 데이터를 읽을 수 있게 만들고, 도메인에도 묶어 둡니다. 서명이 유효한 건 내가 본 그 항목뿐이고, 다른 컨트랙트나 다른 체인에서 다시 쓸 수도 없습니다.
03 EIP-712라면 앱이 주문을 바꿀 수 없나요?
맞습니다. 서명된 주문을 조금이라도 바꾸면(가격, 수량, 방향) 서명이 무효가 됩니다. 앱은 주문을 전달할 수는 있어도 바꿀 수는 없습니다. 이것이 신뢰를 전제로 하지 않는 논커스터디얼 거래를 가능하게 합니다.
04 EIP-712를 쓸 때도 조심할 점은?
서명 요청이 올 때마다 꼼꼼히 읽고, 도메인이 거래하려는 곳과 맞는지 확인하세요. EIP-712가 지키는 건 주문 자체입니다. 토큰 승인(approve)은 별개라서, 오래된 승인은 정기적으로 점검하고 취소하세요.
Pots 참여하기