콘텐츠로 건너뛰기

Delegation Toolkit이란 무엇이며 이를 통해 무엇을 만들 수 있나요?

Delegation Toolkit으로 유연하고 공유 가능한 권한을 갖춘 dapp을 구축하는 방법을 알아보세요

3분
Delegation Toolkit이란 무엇이며 이를 통해 무엇을 만들 수 있나요?

Ethereum의 계정 제어 방식은 전통적으로 경직되어 있었습니다. 외부 소유 계정(EOA)은 단순하고 널리 사용되지만 기능에 한계가 있습니다. 스마트 컨트랙트 계정(SCA)은 훨씬 더 많은 유연성을 제공하지만, 최근까지도 독립적으로 작동할 수 없었습니다. 모든 트랜잭션을 시작하고 수수료를 지불하려면 여전히 EOA가 필요했습니다.

이러한 상황은 ERC-4337의 등장으로 바뀌었습니다. 이제 SCA는 가스 후원, 트랜잭션 배치(여러 트랜잭션을 하나로 묶기), 세션 키, 체인 추상화 같은 기능을 기본적으로 지원할 수 있게 되어 보안성, 유연성, 사용자 제어 측면에서 큰 개선이 이루어졌습니다.

그렇다고 EOA가 사라진 것은 아닙니다. 그럴 만한 이유도 있습니다. 임의의 검증 로직을 지원하는 계정이 모든 사용자에게 유용한 것은 아니기 때문입니다. 지금 당장 SCA로 전환할 이유가 있을까요?

하지만 그렇다면, 사용자가 전환할 준비가 되었을 때—또는 ERC-4337 계정 기능 중 하나 이상을 일시적으로 활용하고 싶을 때—새로운 계정 유형을 처음부터 만들도록 강요받지 않으려면 어떻게 해야 할까요? 기존의 익숙한 설정을 포기하지 않고도 EOA가 특정 트랜잭션에서 SCA의 기능을 활용할 수 있게 하려면 어떻게 해야 할까요?

바로 이 지점에서 EIP-7702(Set-EOA-account-code)가 등장합니다.

곧 예정된 Pectra 업그레이드의 일환으로, EIP-7702는 EOA가 자신의 주소에서 직접 실행되는 스마트 컨트랙트 코드에 제어권을 위임함으로써 일시적으로 SCA처럼 동작할 수 있게 해줍니다. 즉, 사용자는 이러한 고급 기능을 누리기 위해 새로운 계정으로 마이그레이션할 필요가 없습니다. 이는 하위 호환성을 보장하면서 이더리움을 앞으로 나아가게 합니다.

이러한 개선에도 불구하고, web2와 유사한 경험을 완전히 구현하기 위해 아직 해결해야 할 중요한 UX 과제가 남아 있습니다. 바로 세밀하고 유연한 권한 관리입니다. 사용자가 특정 행동을 자신을 대신해 수행할 권한을 다른 사용자와 손쉽게 공유할 수 있어야 하며, 이는 엄격한 제한과 필요 시 권한을 철회할 수 있는 기능을 갖춘 통제된 방식으로 이루어져야 합니다.

이것이 바로 Delegation Toolkit이 해결하고자 하는 과제입니다. 하지만 그것이 무엇이고 어떻게 작동하는지 살펴보기 전에, 이더리움 계정 UX의 다음 단계를 이끄는 두 가지 ERC를 먼저 자세히 알아보겠습니다.

ERC 7710: 스마트 컨트랙트 위임

ERC-7710은 스마트 컨트랙트 계정이 특정 권한을 다른 이더리움 계정에 위임하는 방식을 표준화하기 위한 제안입니다. 위임자가 명확하고 강제 가능한 규칙에 따라 수임자에게 권한을 부여할 수 있는 공통 인터페이스를 도입합니다.

ERC-7710을 통해 개발자는 한 계정이 지출 한도, 시간 제한, 또는 작업별 권한과 같은 특정 조건 하에 다른 계정이 자신을 대신해 행동하도록 안전하게 허용하는 시스템을 구축할 수 있습니다. 이 모든 것은 안전하고 예측 가능한 위임 흐름을 통해 처리됩니다.

그렇다면 이 맥락에서 "위임"은 무엇을 의미할까요?

간단히 말해, 계정 소유권과 계정 실행을 분리하는 것입니다. 위임자는 여전히 자산이나 로직을 소유하지만, 전체 제어권을 포기하지 않고 특정 권한을 일시적 또는 영구적으로 다른 사람에게 넘길 수 있습니다.

네트워크 관점에서 ERC-7710은 계정 간 권한 전달 방식에 명확성과 조합 가능성을 부여합니다. 모든 앱이 자체적인 위임 로직을 구현하는 대신, 이제 컨트랙트와 도구들이 함께 활용할 수 있는 공통 기반이 마련됩니다.

ERC 7715: 지갑에서 권한 부여

ERC-7715는 dapp이 사용자 지갑에 권한을 요청하는 방식을 간소화하기 위한 제안입니다. dapp이 모든 상호작용마다 반복적인 확인 없이 사용자 계정에 대한 명확하게 범위가 지정된 사전 승인 접근을 요청할 수 있는 권한 모델을 도입합니다.

현재의 일반적인 상호작용 흐름은 번거롭습니다. dapp이 트랜잭션을 전송하거나 컨트랙트와 상호작용하려 할 때마다 지갑이 사용자에게 승인을 요청합니다. 한도, 기간을 지정하거나 dapp이 할 수 있는 범위를 좁힐 방법이 없고, 사용자가 나중에 이러한 승인을 확인하거나 철회할 수 있는 표준적인 방법도 없습니다.

ERC-7715가 이를 바꿉니다. 새로운 메서드인 wallet_grantPermissions를 도입하여 dapp이 특정 기능을 사전에 요청할 수 있게 합니다. 예를 들어, 다음 한 시간 동안 최대 10 USDC를 지출하거나 다음 몇 세션 동안 단일 스마트 컨트랙트와 상호작용할 권한을 요청할 수 있습니다. 사용자는 이를 사전에 검토하고 명확하게 승인하거나 거부할 수 있습니다.

dapp 관점에서 이는 온보딩을 더 원활하게 하고, 사용자를 지속적으로 방해하지 않는 세션 기반 또는 자동화된 경험을 가능하게 합니다. 지갑 입장에서는 권한을 처리하고 부여된 내용을 관리하기 위한 깔끔하고 감사 가능한 구조를 도입합니다. 사용자에게는 더 나은 가시성, 더 많은 제어권, 그리고 보안을 희생하지 않으면서도 성가신 팝업을 줄여줍니다.

그렇다면 개발자는 이러한 표준으로 무엇을 만들 수 있을까요?

ERC-7710과 ERC-7715를 결합하여 구현할 수 있는 기능들을 소개합니다:

  • ERC-7710을 사용해 보안 지갑에서 자주 사용하는 지갑으로 고정 한도를 위임하여 일일 지출 한도를 설정하고, 대부분의 자금을 안전하게 오프라인으로 유지합니다.

  • 제한된 권한을 자동으로 부여하는 사전 범위 지정 위임을 사용해 사용자가 지갑 설정이나 트랜잭션 승인 없이 민팅이나 보상 수령 같은 작업을 수행할 수 있도록 하여 온보딩을 간소화합니다.

  • ERC-7710을 통해 제한된 실행 권한을 부여하고, ERC-7715를 통해 지갑에서 해당 권한을 쉽게 승인할 수 있게 하여 AI 에이전트가 대신 거래하도록 합니다.

  • ERC-7710 위임을 활용하는 SCA에 후원 권한을 부여하여 dapp이 사용자의 가스비를 대납하게 하고, 사용자가 ETH 없이도 특정 트랜잭션을 처리할 수 있게 합니다.

  • ERC-7710을 사용해 헬퍼 컨트랙트가 할 수 있는 범위를 엄격하게 제한하고 표준 ERC-20 토큰과의 호환성을 보장하면서, 대신 approve(0)을 호출하는 헬퍼 컨트랙트에 권한을 위임하여 토큰 승인을 안전하게 철회합니다.

그 외에도 훨씬 더 많은 것들이 가능합니다.

Delegation Toolkit 정의

Delegation Toolkit을 가장 쉽게 설명하자면, 두 가지 주요 패키지로 구성된 도구 모음입니다:

  1. Delegation Core SDK – 개발자가 ERC-4337 계정 추상화가 도입한 모든 기능을 활용하는 ERC-4337 호환 스마트 컨트랙트 계정(위임자 계정)을 생성할 수 있게 해주는 패키지입니다.

  2. Delegation Framework – 스마트 컨트랙트 계정이 ERC-7710 표준을 통해 다른 이더리움 계정에 권한을 위임하고, 웹사이트, dapp, 또는 궁극적으로 모든 것이 ERC-7715를 통해 계정에 권한을 요청할 수 있게 해주는 시스템입니다(출시 예정).

간단히 말해, Delegation Toolkit은 ERC-4337 스마트 컨트랙트 계정(SCA)을 지원하고, 다른 SCA나 EOA에 권한을 위임하며, dapp이 해당 권한을 요청할 수 있는—스마트 계정에서든, Pectra 업그레이드 이후에는 EOA에서든—dapp을 구축할 수 있게 해줍니다.

스마트 컨트랙트 계정의 작동 방식에 익숙하다면 Delegation Core VIEM 패키지에서 무엇을 기대할 수 있는지 이미 알고 계실 것입니다. 그렇지 않다면 공식 문서를 통해 더 깊이 알아보시기 바랍니다. 이 글의 나머지 부분에서는 Delegation Framework 자체에 집중하여 이를 강력하게 만드는 핵심 원칙들을 살펴보겠습니다.

오프체인 위임

위임이 유효하기 위해 반드시 온체인에 존재할 필요는 없습니다. 계정 A가 계정 B를 위한 위임에 서명하면, 암호학적으로 안전하고 의도된 수임자만 사용할 수 있기 때문에 IPFS, 브라우저 캐시, 클라우드 스토리지, 또는 로컬에 다운로드하는 등 어디에나 저장할 수 있습니다. 이는 전체 시스템을 더욱 확장 가능하고 유연하게 만듭니다.

예를 들어, B는 필요할 때 서명된 위임을 가져와 온체인 스토리지나 사전 가스 비용 없이 트랜잭션에 사용할 수 있습니다.

철회 가능한 권한

위임은 영구적이지 않습니다. 원래 위임자인 계정 A는 이미 전이적 위임을 통해 하위로 전달된 경우에도 자신이 발행한 모든 활성 위임을 철회할 수 있습니다(아래 전이적 또는 체인 위임 섹션 참조). 철회되면 위임 관리자는 이에 의존하는 모든 하위 위임을 포함하여 이를 사용하려는 모든 시도를 거부합니다. 이는 안전을 위해 매우 중요합니다.

계정 A가 침해를 의심하거나 권한을 업데이트하려는 경우, 관련된 모든 사람을 추적할 필요 없이 즉시 접근을 차단하여 전체 신뢰 체인을 무효화할 수 있습니다. 언제든지 플러그를 뽑을 수 있는 것과 같습니다.

범위 지정 위임

Delegation Toolkit에서 위임은 일반적으로 특정 수임자에게 범위가 지정됩니다. 즉, 계정 A가 계정 B에게 위임에 서명하면 B만 이를 사용할 수 있습니다. 다른 누군가가 서명된 위임을 손에 넣더라도, 암호학적으로 B에게 바인딩되어 있어 아무 소용이 없습니다.

그러나 오픈 위임도 지원됩니다. 이는 수임자를 사전에 지정하지 않아 어떤 계정이든 사용할 수 있는 위임입니다. 오픈 위임은 수임자가 누가 될지 아직 모를 때 유용하지만, 남용을 방지하기 위해 주의해서 사용해야 합니다. delegate 필드를 특수 상수 ANY_BENEFICIARY(0x0000000000000000000000000000000000000a11)로 설정하여 생성할 수 있습니다.

계정 B가 나중에 범위 지정 권한을 계정 C에게 전달하려면 B에서 C로의 새로운 위임을 명시적으로 생성해야 합니다. 이는 오픈 또는 전이적 흐름을 사용하는 경우에도 권한 경계가 명확하고 의도적으로 유지되도록 보장합니다.

Caveats

Caveat는 위임이 어떻게 사용될 수 있는지를 정의하는 규칙입니다. 위임자가 위임에 첨부할 수 있는 사용자 정의 조건으로 생각하면 됩니다. 예를 들어, 계정 A가 계정 B에게 위임할 때 B는 최대 1 ETH만 전송하거나 다음 24시간 내에 특정 컨트랙트와만 상호작용할 수 있다는 caveat를 포함할 수 있습니다.

Caveat는 특수한 caveat enforcer 컨트랙트를 사용하여 런타임에 적용되며, 어떤 행동이 실행되기 전에 규칙이 준수되는지 확인합니다. 따라서 B가 행동할 권리를 가지고 있더라도 A가 설정한 명확한 범위 내에서만 운영됩니다. 지원되는 caveat의 전체 목록을 확인하거나 자신만의 커스텀 caveat를 만드는 방법을 알아보세요.

전이적 또는 체인 위임

Delegation Framework의 더욱 강력한 기능 중 하나는 위임이 단일 전달로 끝날 필요가 없다는 것입니다. 전이적 위임을 통해 권한을 받은 계정, 예를 들어 계정 B는 해당 권한의 전부 또는 일부를 다른 계정에 다시 위임하여 하나의 계정에서 시작되는 위임 체인을 형성할 수 있습니다.

체인의 각 링크는 암호학적으로 서명되고 자체적인 caveat로 범위가 지정되어 있어, 모든 수준에서 권한을 좁히거나 재정의할 수 있습니다. 즉, 이러한 하위 위임은 더 엄격한 제약이나 제한된 기능을 가진 원래 위임의 하위 집합이 될 수 있습니다.

중요한 것은, 원래 위임자가 여전히 완전한 제어권을 유지하며 언제든지 초기 위임을 철회할 수 있고, 이는 체인의 모든 하위 위임을 자동으로 무효화하여 DAO 및 공유 지갑과 같은 복잡한 권한 설정에 이상적인 유연하면서도 안전한 신뢰 체인을 만든다는 점입니다.

다음 단계는?

Delegation Toolkit은 dapp에 더 안전하고, 더 스마트하며, 더 유연한 권한 시스템을 구현할 수 있는 도구를 제공합니다. 위임된 지출, 가스 후원, 자동화된 워크플로우, 또는 원활한 온보딩을 구현하고자 하든, 이제 모든 것이 처음부터 다시 만들 필요 없이 가능합니다.

다음 포스트에서는 실습을 시작하겠습니다. "친구 초대" 기능 구축 튜토리얼부터 시작하여 위임의 실제 사례를 살펴볼 것입니다. 오늘 바로 구현할 수 있는 더 많은 기능을 다룰 시리즈의 나머지 내용도 기대해 주세요.

이러한 아이디어를 더 깊이 탐구하고 싶다면, 다른 개발자들과 함께 Delegation Toolkit으로 구축할 기회를 얻을 수 있는 4월 Gator Hackathon을 주목해 주세요.

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

번역 평가하기

이 글의 작성자:

  • Kingsley Okonkwo

    공인 이더리움 블록체인 개발자인 Kingsley는 Consensys에서 테크니컬 라이터로 활동하며, 특히 개발자 도구에 중점을 두고 있습니다. Consensys에 합류하기 전, Kingsley는 Gigster와 Braintrust를 포함한 여러 플랫폼에서 프리랜서 백엔드 개발자로 활동했습니다. 5년간의 소프트웨어 개발 경험을 바탕으로, JavaScript(Node.js 및 React), GoLang, SQL, Docker 등의 도구에 능숙합니다. Kingsley는 최신 web3 기술을 활용해 단계별 튜토리얼과 사용 방법 가이드를 제작하는 데 탁월하며, 동료 개발자들이 더 나은 dapp을 구축할 수 있도록 돕고 있습니다. 현재 두바이에 거주하고 있는 Kingsley는 여가 시간에 농구와 축구를 즐깁니다.

    모든 글 읽기