EIP-2771은 네이티브 메타 트랜잭션을 위한 안전한 프로토콜을 정의하며, 수신자 계약이 신뢰할 수 있는 포워더로부터 원래 발신자를 안전하게 식별하는 방법을 표준화합니다. 이 표준은 Final 상태로 확정되었습니다.
핵심 문제 해결
메타 트랜잭션에서 msg.sender는 포워더의 주소가 되어 원래 발신자를 식별하기 어렵습니다. EIP-2771은 신뢰할 수 있는 포워더가 calldata 끝에 원래 발신자 주소를 추가하는 방식을 표준화합니다. 수신자 계약은 _msgSender() 함수를 통해 실제 발신자를 안전하게 얻을 수 있습니다.
신뢰 모델
수신자 계약은 특정 포워더 주소만 신뢰하도록 설정됩니다. 포워더는 사용자 서명을 검증하고 원래 발신자 정보를 calldata에 안전하게 첨부합니다. 이 신뢰 모델은 보안을 유지하면서 가스비 추상화를 가능하게 합니다.
구현 방법
OpenZeppelin은 ERC2771Context 컨트랙트를 제공하여 표준 구현을 지원합니다. _msgSender()와 _msgData() 함수를 오버라이드하여 포워더에서 온 경우 원래 발신자 정보를 반환합니다. Biconomy, GSN 등의 릴레이 네트워크가 이 표준을 지원합니다.
실제 활용
EIP-2771은 가스비가 없는 온보딩 경험을 제공하는 데 널리 활용됩니다. 게임, NFT 플랫폼, DeFi 프로토콜에서 사용자 편의성을 높이기 위해 채택되었습니다. 이더리움 생태계에서 메타 트랜잭션의 사실상 표준으로 자리잡았습니다.
보안 고려사항
잘못 구성된 포워더 신뢰 설정은 심각한 보안 취약점을 야기할 수 있습니다. 포워더 주소 관리와 업그레이드 시 주의가 필요합니다. 이 표준은 신중한 보안 감사와 함께 사용되어야 합니다.