ERC-777 설명: 훅(Hook)을 갖춘 최신 토큰 표준

LeeMaimaiLeeMaimai
/2025년 10월 16일
ERC-777 설명: 훅(Hook)을 갖춘 최신 토큰 표준

주요 결과

• ERC-777은 ERC-20의 한계를 해결하기 위해 설계된 새로운 토큰 표준입니다.

• 훅 기능을 통해 계약은 토큰 전송에 자동으로 반응할 수 있습니다.

• 운영자 개념은 토큰 전송을 더 유연하고 명시적으로 만듭니다.

• 보안 고려 사항으로는 재진입 공격 방지 및 방어적 프로그래밍이 중요합니다.

• 2025년에는 ERC-777의 프로그래밍 가능성이 더욱 중요해질 것입니다.

ERC-777은 ERC-20의 오랜 한계를 해결하고 더 풍부한 토큰 흐름을 위한 프로그래밍 가능한 "훅(hook)"을 도입하도록 설계된 새로운 이더리움 토큰 표준입니다. 컴포저빌리티, 안전한 승인, 프로토콜 자동화에 대한 개발자 논의를 따라왔다면 ERC-777이 이러한 요구의 교차점에 있음을 알 수 있습니다. 이 글에서는 ERC-777의 작동 방식, 존재 이유, 장점, 주의해야 할 보안 트레이드오프, 그리고 2025년 사용자 및 빌더가 이를 어떻게 접근할 수 있는지 설명합니다.

ERC-777이 해결하고자 했던 문제

ERC-20은 기본 대체 가능 토큰 표준이 되었지만, 다음과 같은 주목할 만한 문제점이 있습니다.

  • 승인은 번거롭고 오류가 발생하기 쉽습니다 (예: 허용 한도를 재설정하는 것을 잊는 경우).
  • 계약은 토큰이 도착할 때 자동으로 반응할 수 없으며, 풀(pull) 방식의 상호 작용이 필요합니다.
  • 전송 의미론이 제한적이어서 복잡한 흐름(수수료, 콜백, 다단계 워크플로)을 더 어렵게 만듭니다.

ERC-777은 다음과 같은 기능을 제공하여 이를 현대화하려고 시도합니다.

  • 내장된 전송/수신 훅을 통해 계약이 동일한 트랜잭션 내에서 전송에 반응할 수 있습니다.
  • 운영자 기반 전송을 통해 수탁 및 서비스의 토큰 관리를 단순화합니다.
  • ERC-20 인터페이스와의 하위 호환성을 통해 생태계 채택을 용이하게 합니다.

공식 사양은 이더리움 개선 제안 사이트의 표준 ERC-777을 참조하십시오: EIP-777. 더 넓은 토큰 생태계 내에서 이를 파악하기 위해 이더리움 개발자 문서의 토큰 표준은 관련 EIP 전반에 걸쳐 문맥과 링크를 제공합니다: 이더리움 토큰 표준 개요.

ERC-777 작동 방식: 훅과 운영자

두 가지 핵심 아이디어가 ERC-777을 구동합니다.

  1. 훅 (Hooks)
  • tokensToSend: 토큰이 이동하기 전에 호출되는 송신 측 훅입니다.
  • tokensReceived: 토큰이 도착한 후 호출되는 수신 측 훅입니다.
  • 이들은 선택 사항이며 전역 인터페이스 레지스트리인 EIP-1820을 통해 검색됩니다.

훅을 사용하여 계약은 전송 중에 비즈니스 로직을 구현할 수 있습니다: 자동 스테이킹, 수수료 분할, 로깅, 게이팅 또는 예상치 못한 토큰 거부. 훅은 컴포저빌리티를 향상시키고 별도의 "승인 후 호출" 흐름의 필요성을 줄입니다.

  1. 운영자 (Operators)
  • 운영자는 보유자를 대신하여 토큰을 전송할 권한을 가진 사람으로, 위임된 수탁자와 유사합니다.
  • 기본 운영자는 토큰에 의해 설정될 수 있으며, 사용자는 언제든지 이를 취소할 수 있습니다.
  • ERC-777의 운영자는 ERC-20 허용 한도에 비해 더 명시적이고 유연한 모델입니다.

실제로 대부분의 팀은 감사된 라이브러리에 의존합니다. OpenZeppelin은 명확한 API와 가드레일을 갖춘 널리 사용되는 구현을 제공합니다: OpenZeppelin ERC-777 계약.

최소한의 개발자 예시

아래는 EIP-1820을 통해 tokensReceived를 사용하는 수신자 계약의 개략도입니다. 항상 검증된 라이브러리를 사용하고 프로덕션 코드에 대한 감사를 수행하십시오.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC777/IERC777.[sol](https://onekey.so/blog/ko/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import "@openzeppelin/contracts/interfaces/IERC1820Registry.[sol](https://onekey.so/blog/ko/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";

[contract](https://onekey.so/blog/ko/ecosystem/what-is-a-smart-contract/) ExampleReceiver {
    IERC1820Registry constant _ERC1820 =
        IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24);

    bytes32 constant TOKENS_RECIPIENT_INTERFACE_HASH =
        keccak256("ERC777TokensRecipient");

    event Received(address operator, address from, uint256 amount, bytes data, bytes operatorData);

    constructor() {
        _ERC1820.setInterfaceImplementer(address(this), TOKENS_RECIPIENT_INTERFACE_HASH, address(this));
    }

    // ERC777 tokensReceived 훅
    function tokensReceived(
        [address](https://onekey.so/blog/ko/ecosystem/what-is-a-crypto-wallet-address/) operator,
        [address](https://onekey.so/blog/ko/ecosystem/what-is-a-crypto-wallet-address/) from,
        [address](https://onekey.so/blog/ko/ecosystem/what-is-a-crypto-wallet-address/) /*to*/,
        uint256 amount,
        bytes calldata data,
        bytes calldata operatorData
    ) external {
        // 사용자 지정 로직, 예: 예금 기록 또는 내부 회계 트리거
        emit Received(operator, from, amount, data, operatorData);
    }
}

핵심 요점: 훅은 별도의 함수 호출 없이 계약이 토큰 이동을 "수신"할 수 있도록 하여 마찰을 줄이고 복잡한 흐름을 기본적으로 느끼게 합니다.

보안 고려 사항: 재진입 및 프로토콜 설계

훅은 강력하지만, 계약이 방어적으로 설계되지 않으면 재진입 위험을 초래합니다. 초기 DeFi에서 일련의 사고는 토큰 콜백이 ERC-20과 유사한 동작을 가정하는 프로토콜과 예상치 못하게 상호 작용할 수 있는 방법을 강조했습니다. 이러한 교훈은 오늘날에도 관련성이 있는 모범 사례를 촉진했습니다.

  • 상태 변경 함수에서 검사-효과-상호 작용을 선호하십시오.
  • 외부 호출 경로에 재진입 가드를 사용하십시오.
  • 콜백 실행 중에 전송 중이더라도 풀/회계 로직을 견고하게 설계하십시오.
  • 가능한 경우 민감한 작업에는 "풀" 모델을 고려하십시오.
  • 전송이 부작용이 없다고 가정하지 마십시오.

Uniswap v1 시대의 특정 익스플로잇은 역사 속으로 사라졌지만, 원칙은 여전히 유효합니다. 훅은 토큰 전송을 수동이 아닌 능동적으로 만듭니다. 최신 감사 및 라이브러리는 이에 따라 발전했습니다. 표준 및 보안 노트에 대한 기초 자료는 EIP-777을 참조하십시오. 잘 관리되는 패턴 및 가드레일을 연구하려면 OpenZeppelin의 ERC-777 문서를 참조하십시오.

ERC-20과의 상호 운용성 및 마이그레이션

ERC-777 토큰은 일반적으로 ERC-20 인터페이스와 하위 호환되지만, 가정이 다릅니다.

  • 전송은 훅을 트리거할 수 있으며, 이는 부작용을 가질 수 있습니다.
  • 운영자는 허용 한도를 대체하거나 보완하여 서비스가 상호 작용하는 방식을 변경합니다.
  • 지갑 및 dApp은 메타데이터와 훅 기반 흐름을 올바르게 처리해야 합니다.

일부 팀은 광범위한 생태계 친숙도를 고려하여 EIP-2612 permit (가스 없는 승인)과 같은 개선 사항이 있는 ERC-20을 고수합니다. 다른 팀은 프로그래밍 가능한 수신 또는 운영자 의미론이 사용자 경험 또는 프로토콜 로직을 실질적으로 개선하는 곳에서 ERC-777을 채택합니다.

2025년 환경: 훅의 위치

ERC-20은 여전히 대체 가능 토큰을 지배하지만, 훅은 다른 곳에서도 디자인에 영향을 미쳤습니다. 명확한 예는 Uniswap v4의 아키텍처로, 동적 수수료 및 맞춤형 로직과 같은 기능을 활성화하기 위해 유동성 풀 수준에서 프로그래밍 가능한 "훅"을 채택하여 설계상 프로토콜을 더 컴포저블하게 만듭니다. 이러한 진화에 대한 맥락은 Uniswap v4 개요 및 훅 토론을 참조하십시오: Uniswap v4 발표 및 훅.

토큰 수준에서 ERC-777 채택은 여전히 선택적입니다. 특히 자동 콜백 및 운영자 의미론이 실질적인 가치를 제공하는 맥락, 예를 들어:

  • 운영자 전송의 이점을 누리는 수탁 또는 서비스 제공업체 흐름.
  • 수신 시 반응하는 온체인 로열티 프로그램 또는 스트리밍 결제.
  • 회계 또는 수수료 징수를 위한 토큰 네이티브 콜백을 원하는 인프라 계층.

한편, 레이어 2 네트워크는 처리량과 비용 프로필을 계속 개선하여 더 복잡한 토큰 수명 주기 로직을 실현 가능하게 합니다. 이러한 환경은 더 풍부한 전송 의미론이 필요하지만 견고한 보안 엔지니어링에 투자할 수 있는 팀에게 ERC-777의 프로그래밍 가능성을 시기적절한 옵션으로 만듭니다.

빌더를 위한 모범 사례

  • 감사된 라이브러리를 사용하고 잘 알려진 구현을 기본으로 사용하십시오. OpenZeppelin의 ERC-777로 시작하십시오.
  • 실패 모드를 위해 훅 로직을 설계하십시오: 예상치 못한 토큰 거부, 출처 유효성 검사, 불변 조건 검사 유지.
  • 기본 운영자를 명확하게 문서화하십시오. 사용자에게 간단한 취소 경로를 제공하십시오.
  • 재진입 보호 기능을 적용하십시오. 특히 tokensReceived 주위에 적용하고, 엄격하게 필요하지 않은 한 중요한 회계 단계 중 외부 호출을 피하십시오.
  • 훅이 정말 필요한지 고려하십시오. 그렇지 않은 경우 ERC-20 및 EIP-2612 permit이 통합 및 사용자 기대를 단순화할 수 있습니다.
  • 다르게 ERC-777을 처리할 수 있는 지갑 및 dApp 전반에 걸쳐 테스트하십시오. 구현자를 등록하기 위해 EIP-1820 레지스트리를 올바르게 사용하십시오.

사용자를 위한 실용적인 팁

  • ERC-777 토큰이 특정 계약에 도달할 때 로직을 트리거할 수 있음을 이해하십시오. 이는 일반적으로 유익하지만 "수동" ERC-20 전송에 비해 가정이 변경됩니다.
  • 승인하는 내용과 누구에게 승인하는지 검토하십시오. 토큰이 운영자 또는 콜백을 사용하는 경우 수신 계약의 코드와 평판을 신뢰하는지 확인하십시오.
  • "전송" 또는 "보내기"만 표시하는 것이 아니라 명확한 계약 메서드 세부 정보를 표시하는 지갑을 선호하십시오. 익숙하지 않거나 임의의 데이터 필드가 포함된 경우 일시 중지하고 확인하십시오.

ERC-777 고려 시점

ERC-777은 다음과 같은 경우에 의미가 있습니다.

  • 전송 시점에 이벤트 기반 토큰 동작이 필요한 경우 (예: 자동 입금, 수수료 라우팅, 사용자 지정 게이팅).
  • 운영자가 서비스 또는 수탁 모델을 의미 있게 단순화하는 경우.
  • 콜백 기반 의미론을 안전하게 처리하기 위한 엄격한 보안 엔지니어링 및 감사에 전념하는 경우.

ERC-777은 다음과 같은 경우 덜 이상적일 수 있습니다.

  • 단순성과 광범위한 생태계 호환성이 가장 중요한 경우.
  • ERC-20 및 permit 또는 더 높은 수준의 프로토콜 메커니즘 (예: 토큰 훅이 없는 애플리케이션별 컨트롤러)을 통해 목표를 달성할 수 있는 경우.

하드웨어 지갑 관점

더 풍부한 동작과 잠재적인 부작용이 있는 토큰 표준의 경우, 명확한 트랜잭션 내 검사 및 오프라인 서명이 매우 중요합니다. OneKey는 투명한 온디바이스 확인 및 광범위한 EVM 토큰 지원을 강조하는 오픈 소스 하드웨어 지갑입니다. 고급 토큰 표준 또는 콜백을 활용하는 DeFi 프로토콜과 정기적으로 상호 작용하는 경우 하드웨어 지갑을 사용하면 서명하는 내용을 정확하게 확인하고 악의적인 계약에 대한 노출을 줄일 수 있습니다. 즉, ERC-777의 복잡성은 안전한 키 관리 및 명시적이고 사람이 읽을 수 있는 확인을 더욱 중요하게 만듭니다. OneKey와 같은 장치가 의미 있는 마음의 평화를 제공할 수 있는 영역입니다.

결론

ERC-777은 이더리움 및 EVM 체인에서 더 풍부하고 컴포저블한 토큰 흐름을 가능하게 하는 최신 토큰 기능(훅 및 운영자)을 도입합니다. 그 힘은 책임과 함께 옵니다. 훅은 수동이 아닌 능동적이며, 방어적 프로그래밍과 신중한 사용자 경험을 요구합니다. 2025년에는 Uniswap v4에서 볼 수 있듯이 훅의 개념이 토큰을 넘어 프로토콜 디자인에 영향을 미쳤으며, ERC-777 자체는 프로그래밍 가능한 수신 및 운영자 의미론의 실질적인 이점을 얻는 팀을 위한 표적 선택으로 남아 있습니다. ERC-777을 채택하든 개선된 ERC-20 패턴을 고수하든, 좋은 엔지니어링 관행과 안전한 사용자 워크플로를 결합하고 하드웨어 기반 서명을 고려하여 토큰 로직이 강력하고 안전하도록 하십시오.

OneKey로 암호화 여정 보호하기

View details for OneKeyOneKey

OneKey

세계에서 가장 진보한 하드웨어 지갑.

View details for 앱 다운로드앱 다운로드

앱 다운로드

스캠 경고. 모든 코인 지원.

View details for OneKey SifuOneKey Sifu

OneKey Sifu

암호화 의문을 해결하기 위해, 한 번의 전화로.

계속 읽기