콘텐츠로 건너뛰기

해커 가이드: MetaMask Delegation Toolkit ERC-7715 액션

ERC-7715 권한으로 빌드하는 해커 가이드

2분
해커 가이드: MetaMask Delegation Toolkit ERC-7715 액션

이 가이드는 MetaMask Delegation Toolkit의 실험적 ERC-7715 액션에 대한 포괄적인 개요를 제공합니다. 이 혁신적인 도구를 통해 dapp은 토큰 전송과 같은 특정 액션에 대한 사용자 권한을 요청하고 관리할 수 있습니다.

이를 통해 구독 및 자동 결제와 같은 흥미로운 새로운 사용 사례가 가능해지며 사용자 경험도 향상됩니다. 기본 개념을 살펴보고, 개발 환경 설정 방법을 안내하며, Gator SDK를 활용하는 dapp 구축 과정을 단계별로 설명합니다. 이 가이드는 블록체인 상호작용에 Viem을 사용합니다.

기본 개념: Web3 트랜잭션의 새로운 패러다임

ERC-7715는 dapp이 사용자 지갑과 상호작용하는 방식에 새로운 패러다임을 도입합니다. 사용자가 모든 트랜잭션을 수동으로 승인해야 하는 대신, dapp은 사전에 정의된 한도 내에서 사용자를 대신해 특정 액션을 수행할 수 있는 권한을 요청할 수 있습니다.

핵심 개념

  • 세션 계정(Session account): 사용자를 대신하여 행동할 수 있는 권한을 부여받은 dapp의 계정(EOA 또는 스마트 컨트랙트)입니다.

  • 사용자 지갑(User wallet): 세션 계정에 권한을 부여하는 사용자의 MetaMask 지갑입니다.

  • 권한(Permissions): dapp이 수행할 수 있도록 승인된 특정 액션입니다. Gator SDK는 현재 native-token-stream을 지원합니다.

  • Gator 스마트 계정(Gator smart account): 사용자의 MetaMask Snap 내에 생성된 스마트 계정으로, Gator SDK를 통해 부여된 권한을 관리하는 데 특화되어 있습니다.

  • 위임(Delegation): 권한 기반 트랜잭션을 가능하게 하는 핵심 메커니즘입니다. 사용자가 권한을 부여하면, 사용자의 Gator 스마트 계정에서 dapp의 세션 계정으로 위임이 생성됩니다.

이를 통해 오프체인 인증이 설정되어, dapp이 사용자의 각 트랜잭션 서명 없이도 정해진 조건 하에 특정 액션을 실행할 수 있습니다. 규칙이 있는 정기 한도를 설정하는 것과 같습니다.

  • ERC-7715 (지갑 권한 요청): dapp이 사용자 지갑에 권한을 요청하는 방식에 대한 표준입니다. https://eip.tools/eip/7715

  • ERC-7710 (스마트 컨트랙트 위임): 스마트 컨트랙트가 다른 계정에 권한을 위임하는 방식에 대한 표준입니다.https://eip.tools/eip/7710

  • MetaMask Snaps: 개발자가 MetaMask의 기능을 확장할 수 있는 시스템입니다. Snap은 기본적으로 MetaMask의 기능을 확장하는 플러그인으로, 새로운 블록체인, 새로운 트랜잭션 유형을 지원하고, Gator SDK의 경우 고급 권한 관리를 가능하게 합니다. Gator SDK는 두 가지 Snap에 의존합니다:- Permission kernel snap: 특정 권한 제공자 Snap(이 경우 Gator Permission Snap)으로의 라우터 역할을 합니다.

  • Gator permissions snap: 사용자의 Gator 스마트 계정을 생성하고 관리합니다. 이 Snap은 사용자에게 Permission Picker UI를 제공하고 권한을 편집하거나 승인 또는 거부할 수 있도록 합니다.

- ERC-4337: 계정 추상화(Account Abstraction) 표준으로, 보다 유연한 스마트 계정 및 트랜잭션 관리를 가능하게 하며, Gator SDK와 함께 자주 사용됩니다. https://eip.tools/eip/4337

- Bundler: 여러 사용자 작업(트랜잭션)을 단일 트랜잭션으로 묶어 가스 사용을 최적화하는 서비스입니다.

  • Paymaster (선택 사항): 트랜잭션의 가스 비용을 대신 지불할 수 있는 스마트 컨트랙트로, 사용자가 가스 없이 트랜잭션을 수행할 수 있게 합니다.

작동 방식

Gator SDK는 MetaMask Snaps, ERC-7715, ERC-7710과 함께 권한 기반 워크플로우를 구현합니다:

  1. 권한 요청: 세션 계정으로 활동하는 dapp이 권한 요청을 시작합니다. 이는 ERC-7715에서 표준화된 wallet_grantPermissions 메서드를 사용하여 수행됩니다. dapp은 권한 유형(예: native-token-stream), 대상(주소), 특정 파라미터(예: 금액)를 지정합니다.

  2. 사용자 인증: MetaMask Flask가 사용자에게 권한 요청을 표시합니다. 필요한 Snap이 아직 설치되지 않은 경우, MetaMask Flask는 이 시점에서 사용자에게 설치를 요청합니다. 그런 다음 사용자에게 dapp이 요청하는 내용에 대한 명확하고 이해하기 쉬운 설명이 표시됩니다.

사용자는 요청을 승인하거나 거부할 수 있습니다. Permission Kernel Snap은 사용자가 요청된 권한을 이해할 수 있도록 이 상호작용에서 핵심적인 역할을 합니다.

  1. Gator 스마트 계정 생성: 사용자가 권한을 승인하면 Gator Permissions Snap이 작동합니다. 이 스마트 계정은 위임된 권한이 발생하는 곳입니다.

  2. Gator 계정 자금 충전: 사용자는 위임된 액션을 처리하기에 충분한 자금으로 Gator 스마트 계정을 충전할 책임이 있습니다. 예를 들어, 권한이 native-token-stream인 경우 사용자는 Gator 스마트 계정에 관련 네이티브 토큰을 입금해야 합니다.

  3. 위임 생성: 이것은 중요한 단계입니다. 사용자의 Gator 스마트 계정과 dapp의 세션 계정 간의 연결을 설정하는 위임이 생성됩니다. ERC-7710에 의해 관리되는 이 위임은 dapp이 사용자를 대신하여 행동할 수 있도록 승인하지만, 부여된 권한의 범위 내에서만 가능합니다. 위임은 다음을 지정합니다:1. dapp이 수행할 수 있는 액션(예: 네이티브 토큰 전송).

  4. 다음과 같은 조건 또는 제한(caveats):1. 전송당 최대 금액

  5. 전송 빈도

  6. 만료 날짜

  7. 권한 실행 (위임된 액션): dapp이 부여된 권한 범위 내에서 액션을 수행해야 할 때, 위임을 "실행"합니다. 이는 dapp이 위임에 설정된 규칙을 준수하는 트랜잭션(또는 ERC-4337 사용 시 User Operation)을 구성하는 것을 포함합니다.

그런 다음 dapp은 유효한 위임의 증명을 제공하면서 이 트랜잭션(또는 ERC-4337 사용 시 User Operation)을 제출합니다.

개발 환경 설정

ERC-7715 액션에 필요한 Snap은 현재 Sepolia에서만 작동합니다. ERC-7715 트랙을 개발 중이라면 Sepolia 테스트넷을 사용해야 합니다. Delegation Toolkit의 다른 기능의 경우 여기에 나열된 테스트 네트워크 중 하나를 사용할 수 있습니다.

사전 요구 사항

  • Node.js: 시스템에 Node.js가 설치되어 있는지 확인하세요.

  • MetaMask Flask: 개발자 중심의 MetaMask 버전인 MetaMask Flask를 설치하세요. MetaMask 공식 사이트에서 다운로드하세요. 중요: Flask에는 별도의 브라우저 프로필을 사용하세요. 일반 MetaMask 지갑과 동일한 브라우저를 사용하는 경우 비활성화하세요.

  • MetaMask Snaps: Gator SDK에 필요한 Snap(Permission Kernel Snap 및 Gator Permissions Snap)은 수동으로 설치하거나, dapp이 처음으로 권한을 요청할 때 MetaMask Flask가 사용자에게 설치를 요청합니다.

  • ERC-4337 bundler: 세션 계정이 ERC-4337 지갑인 경우 필요합니다. ERC-4337 지갑에서 사용자 작업을 전송하려면 bundler에 접근해야 합니다. Pimlico가 좋은 옵션입니다. 해당 문서를 참조하세요.

  • Paymaster (선택 사항): 가스 비용을 후원하려면 paymaster가 필요합니다. Pimlico도 paymaster 서비스를 제공합니다.

설치 단계

  1. Node.js 설치: 공식 웹사이트에서 Node.js를 다운로드하여 설치하세요.

  2. MetaMask Flask 설치:- 새 브라우저 프로필을 여세요.

  • MetaMask 웹사이트의 MetaMask Flask 다운로드 페이지로 이동하세요.

  • MetaMask Flask 확장 프로그램을 다운로드하여 설치하세요.

  1. Bundler 설정:- Pimlico를 사용하는 경우 해당 플랫폼에서 계정을 생성하세요.

  • Pimlico에서 bundler API 키를 받으세요.

  • Pimlico bundler에 사용자 작업을 전송하는 방법을 숙지하세요.

  1. Paymaster 설정 (선택 사항):- Pimlico를 사용하는 경우 paymaster 서비스도 사용할 수 있습니다. paymaster를 사용하도록 dapp을 구성하세요.

Gator ERC-7715 액션으로 dapp 구축하기

Gator ERC7715 액션을 시작하는 가장 쉬운 방법은 create-gator-app CLI를 사용하는 것입니다. 이 CLI에는 ERC7715 Permissions를 체험해볼 수 있는 Experimental: Basic Gator app이라는 템플릿이 포함되어 있습니다. 이 템플릿에는 필요한 모든 기본 라이브러리와 코드 스니펫이 설치되어 있습니다.

다음 명령어로 CLI를 실행할 수 있습니다.

npx create-gator-app@latest

중요한 코드 스니펫은 문서의 다음 섹션을 참조하세요.

리소스

AI가 번역했습니다. 오류가 있을 수 있습니다. 항상 정보를 확인하시기 바랍니다.

번역 평가하기

이 글의 작성자: