EIP-7702
Stable은 EIP-7702를 지원하며, 이를 통해 EOA는 자신의 계정 코드를 기존 스마트 계약으로 설정할 수 있습니다. EOA는 대리인의 로직을 실행하는 동안 원래 주소와 개인 키를 유지합니다.
트랜잭션 형식
EIP-7702는 authorizationList 필드가 있는 트랜잭션 유형 0x04를 사용합니다. 각 권한 부여는 EOA가 해당 트랜잭션에 대해 코드를 실행하는 대리인 계약을 지정합니다.
{
type: 4,
to: eoa.address,
data: delegateCallData,
authorizationList: [signedAuthorization],
maxPriorityFeePerGas: 0n, // always 0 on Stable
// ... standard EIP-1559 fields
}권한 부여는 다음을 포함합니다:
chainId: 대상 체인과 일치해야 합니다.address: 대리인 계약 주소.nonce: 권한 부여 계정의 nonce. 해당 계정이 트랜잭션도 전송하는 경우, 트랜잭션이 권한 부여가 처리되기 전에 nonce를 증가시키므로 현재 nonce에 1을 더한 값을 사용합니다.
EIP-7702를 지원하는 지갑과 라이브러리는 권한 부여 형식을 자동으로 처리합니다.
도구
- ethers.js (v6.14+):
wallet.authorize({ chainId, address, nonce })는authorizationList에 포함될 서명된 권한 부여를 생성합니다. - viem:
walletClient와 함께signAuthorization을 사용한 다음, 결과를sendTransaction에 전달합니다. 동일한 계정이 트랜잭션을 전송할 때executor: "self"를 전달하면 viem이 nonce를 설정해 줍니다. - Alchemy Wallet APIs: 감사된 스마트 계정에 위임하고 직접 권한 부여를 구축하지 않고 세션 키를 관리합니다. EIP-7702를 사용한 세션 키를 참조하십시오.
- Hardhat / Foundry: 도구 체인 버전이 Pectra 하드포크를 지원하는 경우 표준 EIP-7702 트랜잭션 형식이 작동합니다.
다음 권장
- EIP-7702 개념: 위임 모델 및 사용 시기를 이해합니다.
- EIP-7702를 사용한 계정 추상화: 여러 호출을 한 번의 트랜잭션 단계로 일괄 처리합니다.
- EIP-7702를 사용한 세션 키: 소유자 키 없이 트랜잭션을 전송하는 범위가 지정된 만료 키를 부여합니다.

