ERC-4337은 이더리움 생태계에서 사용자 계정을 처리하는 방식에 혁명을 일으키고자 하는 이더리움 표준이며, Shapella 업그레이드의 상하이 하드 포크의 일부입니다. 이는 스마트 계정 생성을 허용하는 계정 추상화의 한 방법입니다. 이러한 계정은 여러 작업을 수행하고, 다단계 인증을 처리하고, 암호화폐 구독을 시작하고 유지하는 등의 작업을 코드를 통해 수행할 수 있는 엔티티입니다. [1]
2023년 3월 1일, 덴버에서 열린 WalletCon에서 이더리움 재단의 보안 연구원인 Yoav Weiss는 블록체인 개발자들이 일반적으로 "계정 추상화"라고 부르는 ERC-4337의 주요 계약이 Open Zeppelin의 감사를 받고 Polygon, Optimism, Arbitrum, BNB Smart Chain, Avalanche, Gnosis 체인을 포함한 모든 이더리움 가상 머신(EVM) 호환 네트워크에서 사용이 승인되었음을 발표했습니다. [2]
ERC-4337의 주요 목표는 스마트 계약의 기능을 지갑에 도입하는 것입니다. 기존에는 지갑이 개인 키를 관리하고 트랜잭션에 서명하는 것으로 제한되었습니다. 그러나 ERC-4337을 사용하면 지갑이 스마트 계정과 동의어가 되어 더 복잡한 기능을 허용합니다. ERC-4337은 사용자 경험을 간소화하고 비개발자가 이더리움 생태계와 더 쉽게 상호 작용할 수 있도록 함으로써 웹3 기술의 채택을 증가시키는 것을 목표로 합니다. [3]
ERC-4337을 통해 이더리움은 사용자 계정에 대한 새로운 아이디어를 도입하고 사용자 친화적으로 만들 계획입니다.
계정 추상화는 블록체인 특정 용어로, 계정과 상호 작용하는 계약 코드에서 계정 구현의 세부 정보를 추상화하는 기능을 의미합니다. 즉, 개발자는 각 계정 유형의 특정 구현 세부 정보를 알지 못하고도 다양한 유형의 계정과 상호 작용할 수 있는 계약 코드를 작성할 수 있습니다. [3]
"추상화"라는 용어는 개인 키에 대한 의존성 및 시드 구문의 필요성과 같은 사용자 계정의 레거시 처리를 제거하거나 추출하는 것을 의미합니다. 계정 추상화를 통해 플랫폼은 사용자가 기존 지갑을 만들고 시드 구문이나 개인 키를 수동으로 저장할 필요 없이 암호화폐 서비스를 제공할 수 있습니다. 암호화 키를 하드웨어 보안 모듈(HSM)에 로컬로 저장할 수 있으므로 안전한 자체 보관 암호화폐 지갑을 만들 수 있습니다. [4]
ERC-4337은 이더리움 네트워크의 보안을 유지하면서 사용자 운영 스마트 계약을 생성하고 실행하기 위한 여러 기능과 메커니즘을 제공합니다. [5]
이는 UserOperation이 메모리 풀에 추가되고 트랜잭션으로 번들링되기 전에 UserOperation을 검증하기 위한 규칙과 메커니즘을 제공합니다. 검증 프로세스는 금지된 opcode, 제한된 저장소 액세스 및 CALL opcode에 대한 제한을 확인합니다. UserOperation은 다른 UserOperation 또는 계약과 관련된 데이터에 액세스할 수 없으며, 세 가지 특수 계약이 계정과 상호 작용합니다. 팩토리, 페이마스터 및 서명 집계기입니다. [5]
이 코드는 또한 사용자 작업 및 집계된 작업을 처리하는 일련의 진입점 메서드를 구현하여 플랫폼의 안전성을 보장하도록 구축되었습니다. 이러한 메서드는 유효한 작업만 실행되고 안전하고 효율적인 방식으로 실행되도록 다양한 확인 및 검증을 수행합니다. [5]
예를 들어, handleOps 함수는 각 사용자 작업을 검증하고 실행하기 위해 검증 루프와 실행 루프라는 두 개의 루프를 만듭니다. 검증 루프에서 함수는 계정이 아직 존재하지 않는 경우 계정을 만들고 계정에서 validateUserOp를 호출하여 작업의 서명을 확인하고 필요한 수수료를 지불하고 계정의 예금을 검증합니다. 실행 루프에서 함수는 사용자 작업의 calldata를 사용하여 계정을 호출하며, calldata를 구문 분석하고 작업을 실행하는 방법을 계정이 선택합니다. 악의적인 행위자가 플랫폼을 방해하는 것을 방지하기 위해 코드는 다른 사용자를 위해 트랜잭션을 후원할 수 있는 페이마스터에 대한 평판 시스템을 구현합니다. 페이마스터 인터페이스에는 사용자 작업을 검증하고 예금을 관리하는 기능뿐만 아니라 스테이크를 추가하고 인출하는 기능이 포함됩니다. [5]
이 프로토콜에는 계정 추상화를 안전할 뿐만 아니라 효율적으로 만들기 위한 여러 함수도 포함되어 있습니다. 주요 함수 중 일부에는 UserOperation 객체를 제출하기 위한 eth_sendUserOperation, 가스 값을 추정하기 위한 eth_estimateUserOperationGas, 해시를 기반으로 UserOperation을 반환하기 위한 eth_getUserOperationByHash, 해시를 기반으로 UserOperation 영수증을 반환하기 위한 eth_getUserOperationReceipt, 지원되는 entryPoint 주소의 배열을 반환하기 위한 eth_supportedEntryPoints가 있습니다. [5]