ERC-4337은 Shapella 업그레이드의 상하이 하드 포크의 일부로 이더리움 생태계에서 사용자 계정을 처리하는 방식을 혁신하는 것을 목표로 하는 이더리움 표준입니다. 이는 스마트 계정 생성을 허용하는 계정 추상화 수단입니다. 이러한 계정은 코드를 통해 여러 작업을 수행하고, 다단계 인증을 처리하고, 암호화폐 구독을 시작하고 유지할 수 있는 엔터티입니다. [1]
2023년 3월 1일, 덴버에서 열린 WalletCon에서 이더리움 재단의 보안 연구원인 Yoav Weiss는 블록체인 개발자가 일반적으로 "계정 추상화"라고 부르는 ERC-4337의 주요 계약이 Open Zeppelin의 감사를 거쳐 폴리곤, 옵티미즘, 아비트럼, BNB 스마트 체인, 아발란체 및 그노시스 체인을 포함한 모든 이더리움 가상 머신(EVM) 호환 네트워크에서 사용하도록 승인되었다고 발표했습니다. [2]
ERC-4337의 주요 목표는 스마트 계약의 기능을 지갑에 제공하는 것입니다. 전통적으로 지갑은 개인 키를 관리하고 트랜잭션에 서명하는 데 제한되었습니다. 그러나 ERC-4337을 사용하면 지갑이 스마트 계정과 동의어가 되어 보다 복잡한 기능을 사용할 수 있습니다. ERC-4337은 사용자 경험을 단순화하고 개발자가 아닌 사용자가 이더리움 생태계와 더 쉽게 상호 작용할 수 있도록 하여 web3 기술의 채택을 늘리는 것을 목표로 합니다. [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 및 지원되는 진입점 주소 배열을 반환하기 위한 eth_supportedEntryPoints가 포함됩니다. [5]