Hooks, 즉 Hook 프로그래밍은 개발자가 미리 정의된 함수나 코드 블록인 Hooks를 사용하여 시스템이나 애플리케이션, 라이브러리의 실행 경로를 실행할 수 있게 해주는 프로그래밍 모델입니다. 원본 코드를 수정하지 않고 사용자 정의 코드를 삽입하세요. 후크는 운영 체제, 프레임워크 및 라이브러리, 웹 개발, 플러그인 시스템 등 다양한 프로그래밍 환경 및 프레임워크에서 자주 사용됩니다.
Hooks를 사용하면 개발자는 모든 변경 또는 확장 요구 사항에 대해 원본 코드를 수정하지 않고도 프로그램의 확장성과 사용자 정의 가능성을 높일 수 있으므로 코드를 깨끗하고 안정적으로 유지하는 데 도움이 됩니다. Hooks는 소프트웨어 확장을 위한 우아한 구현 방법을 제공하며 소프트웨어 설계에 매우 유용한 프로그래밍 모델입니다.
특히 AOP(Aspect-Oriented 프로그래밍)는 Hook 프로그래밍과 자주 비교됩니다. AOP는 교차 관심사를 구현하는 모듈식 프로그래밍 패러다임이며 목표는 비즈니스 로직 없이 주요 기능을 향상하거나 수정하는 것이 아닙니다. 여기서는 AOP를 자세히 설명하지 않겠습니다. 단순히 AOP를 HooK 프로그래밍의 상위 수준 추상화로 생각하면 됩니다.
2023년 6월 Uniswap은 Uniswap V4 백서의 초안 버전을 발표하고 공개했습니다. Uniswap V4의 중요한 기능은 Hooks의 도입입니다.
사실 Hooks는 Web2 금융 시스템에서 널리 사용되었습니다. 왜냐하면 이러한 시스템은 일반적으로 높은 수준의 사용자 정의 및 확장성을 요구하기 때문입니다. 거래 처리 시 등의 맞춤형 시나리오에서는 Hooks를 사용해 거래 실행 전후에 2차 검증, 위험 통제 탐지, 자금세탁 방지(AML) 전략 등 추가 검증 로직을 삽입합니다. 확장성 시나리오에는 Hooks를 통해 외부 API 또는 마이크로서비스와 통합하여 신원 인증 서비스, 환율 변환, 결제 게이트웨이 등과 같은 금융 시스템의 새로운 기능을 확장하는 것이 포함됩니다. 그러나 Uniswap은 Hooks를 DeFi에 도입함으로써 선례를 세웠습니다.
Uniswap V4 Hooks는 본질적으로 개발자가 생성하고 정의한 외부 계약입니다. 유동성 풀이 생성되면 Hook 계약을 바인딩하도록 선택할 수 있습니다. 그 후 유동성 풀은 이전에 바인딩된 Hook 계약을 호출하여 라이프사이클의 여러 단계에서 지정된 작업을 수행하여 높은 수준의 맞춤화를 제공합니다. 개발자는 Uniswap의 Hooks를 기반으로 보다 개인화된 거래 시나리오를 충족하고 다음과 같은 보다 풍부한 기능을 갖춘 DApp을 구축할 수 있습니다.
현재 Uniswap V4는 4개의 Hook 콜백 그룹을 지원하며 각 그룹에는 한 쌍의 콜백이 포함되어 있습니다.
아래 그림은 백서에 표시된 beforeSwap/afterSwap Hook의 과정입니다. 스왑 실행 전과 후에 먼저 유동성 풀의 해당 Hook에 해당 플래그가 켜져 있는지 확인하는 것을 볼 수 있습니다. 켜져 있으면 계약의 해당 기능이 호출됩니다.
이러한 후크는 거래 시작 전과 거래 종료 후에 실행될 수 있으므로 온체인 가격 주문과 유사한 기능을 수행할 수 있습니다. 사용자는 Hook 계약에 대한 지정가 주문을 한 다음 afterSwap 콜백에서 사용자 지정 또는 관리형 오라클을 사용하여 가격이 한도를 충족하는지 확인하고 그렇지 않은 경우 거래를 실행합니다. 취소됩니다.
Uniswap V4는 Hooks를 통해 DApp 자체 개발에 유동성을 깊게 결합하여 DApp 기능을 향상시키는 동시에 Uniswap의 네트워크 효과를 향상시켜 전체 DeFi 생태계의 기본 인프라로 만듭니다.
BlockSec 팀은 Uniswap V4 Hooks 메커니즘의 보안 위험을 조사했습니다. Hook 계약 자체가 악의적이라는 사실 외에도 양성 Hook 계약도 매우 취약합니다. 취약점. BlockSec 팀은 Awesome Uniswap v4 Hooks 저장소(커밋 해시 3a0a444922f26605ec27a41929f3ced924af6075)를 분석한 결과 저장소에 있는 프로젝트의 30% 이상이 취약하다는 사실을 발견했습니다. 이러한 취약점은 주로 Hook, PoolManager 및 외부 제3자 간의 위험 상호 작용에서 발생하며 주로 두 가지 범주로 나눌 수 있습니다.
위의 두 가지 유형의 Hook과 관련된 보안 위험을 줄이기 위해 민감한 외부/공용 기능에 대한 필요한 액세스 제어가 올바르게 구현되고 입력 매개변수가 검증되더라도 계약 취약성 자체를 완전히 피할 수는 없습니다. 특히 Hook If의 경우에는 더욱 그렇습니다. 업그레이드 가능한 계약으로 구현되면 OpenZeppelin의 UUPSUpgradeable 취약점과 유사한 관련 문제가 발생할 수도 있습니다.
이유는 Hook 프로그래밍이 스마트 계약의 복잡성을 증가시켜 공격 벡터를 증가시키기 때문입니다. 일반적인 스마트 계약의 경우 OpenZeppelin은 이를 기반으로 계약을 안전하게 개발할 수 있도록 일련의 모범 사례 라이브러리를 보유하지만 본질적으로 개발자에게 "안전한 사용 제약"을 추가합니다. 일반 계약과 비교하여 Hook 계약은 보다 엄격한 "안전성 사용 제약"을 요구합니다. 따라서 Hook 프로그래밍이 널리 사용되기 위해서는 안전한 실행 환경, Hook에 적합한 프로그래밍 패러다임, 더욱 엄격한 사용 제한 등 포괄적인 프레임워크가 필요합니다.
Uniswap V4 Hooks는 스마트 계약을 통해 구현되며, 보안 문제도 프로토콜 수준에서 지원됩니까? 후크 프로그래밍 솔루션? Artela Aspect가 답을 드립니다!
Artela는 개발자가 모듈식, 기능이 풍부하고 확장 가능하며 사용자 정의 가능한 애플리케이션을 구축할 수 있도록 설계된 확장성이 뛰어난 고성능 EVM 호환 레이어 1 블록체인 네트워크입니다. Artela는 AOP를 블록체인 네트워크에 혁신적으로 도입하는 Aspect라는 기본 확장으로 새로운 프로그래밍 가능 모듈을 정의합니다. Aspect는 Hook의 콜백과 마찬가지로 전체 트랜잭션 처리 수명 주기에서 Aspect가 실행되는 위치를 지정해야 합니다. 연결 지점에는 다음이 포함됩니다.
스마트 계약을 호출하는 후속 트랜잭션은 아래 그림과 같이 Aspect에 의해 처리됩니다.
Artela Aspects는 프로토콜 수준 Hooks 구현으로서 Uniswap V4 Hooks에 비해 매우 큰 장점이 있습니다.
먼저 Artela Aspects는 WASM을 사용하여 코드를 실행하면 실행 효율성이 EVM보다 몇 배 더 높습니다.
두 번째로 Artela Aspects는 DeFi의 핵심 논리뿐만 아니라 전체 트랜잭션 수명 주기를 연결할 수 있습니다.
마지막으로 가장 중요한 것은 Artela Aspects가 안전한 샌드박스 환경에서 독립적으로 실행된다는 것입니다. 이러한 격리는 Aspect 실행이 계약 실행 보안에 영향을 미치지 않도록 보장합니다.
Artela Aspects의 격리는 일반 계약인 Hook 계약과 기타 외부 계약 간의 상호 호출을 제한하여 Uniswap V4 Hooks 액세스 제어 및 입력 검증의 문제점을 해결합니다. Uniswap과 같은 DeFi 계약의 경우 Artela에 배포하여 더 빠르고 강력하며 안전한 Hook 경험을 누릴 수 있습니다.
요약
하지만 Uniswap V4 Hooks는 스마트 계약 자체의 한계로 인해 제한됩니다. 프로토콜 설계가 아무리 견고하고 도구 라이브러리가 완벽하더라도 Hook 계약과 기타 외부 계약 간의 상호 호출을 근본적으로 막을 수는 없습니다. 취약점.
고성능 EVM 호환 레이어 1 블록체인 네트워크인 Artela는 프로토콜 시작부터 WASM에서 독립적으로 실행되도록 Aspect를 설계하여 기본적으로 Hooks 프로그래밍을 지원하므로 보안이 크게 향상되었습니다. 이는 보안을 생명으로 여기는 DeFi 프로토콜을 위한 고급 솔루션을 제공합니다.
위 내용은 Uniswap V4부터 Artela 기본 프로토콜까지, DeFi Hooks 혁명의 진보된 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!