Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
hookmate — (실험적) Uniswap v4 Hook 개발을 위한 Solidity 컴포넌트 및 유틸리티 | Kitploit
도구/GitHubGitHub/gmh5225/hookmate
General Purpose UtilitiesCryptographyUtilities & Frameworks
GitHubgmh5225/hookmate

hookmate

(실험적) Uniswap v4 Hook 개발을 위한 Solidity 컴포넌트 및 유틸리티

저장소 보기
22년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

hookmate

Uniswap v4 Hook 개발을 위한 실험적인 Solidity 유틸리티, 라이브러리 및 컴포넌트


설치

foundry 필요

forge install uniswapfoundation/hookmate

문서

라이브러리

PoolStateLibrary.sol

⚠️ 프로덕션 사용 준비 안 됨. 향후 호환성을 깨는 변경 사항이 있을 예정 ⚠️

v4-core 코드가 프리즈되기 전까지 인터페이스는 변경될 수 있습니다

Pool.State 정보에 접근하기 위한 Solidity 라이브러리 -- 중첩된 매핑까지도. PoolManager.extsload를 통해 노출되는 임의의 스토리지 슬롯 읽기에 의존합니다.

mapping(PoolId id => Pool.State) public pools;의 모든 값은 PoolStateLibrary를 통해 사용할 수 있습니다:

// PoolManager.sol
mapping(PoolId id => Pool.State) public pools;

// Pool.sol
struct State {
    Slot0 slot0;                   // getSlot0()
        | uint160 sqrtPriceX96;
        | int24 tick;
        | uint16 protocolFee;
        | uint24 swapFee;
    uint256 feeGrowthGlobal0X128;  // getFeeGrowthGlobal()
    uint256 feeGrowthGlobal1X128;  // ..
    uint128 liquidity;             // getLiquidity()
    mapping(int24 => TickInfo) ticks;      // getTickInfo()
        | uint128 liquidityGross;          // getTickLiquidity()
        | int128 liquidityNet;             // ..
        | uint256 feeGrowthOutside0X128;   // getTickFeeGrowthOutside()
        | uint256 feeGrowthOutside1X128;   // ..
    mapping(int16 => uint256) tickBitmap;  // getTickBitmap()
    mapping(bytes32 => Position.Info) positions;  // getPositionInfo()
        | uint128 liquidity;                      // getPositionLiquidity()
        | uint256 feeGrowthInside0LastX128;       // getFeeGrowthInside() (실시간 계산)
        | uint256 feeGrowthInside1LastX128;       // ..
}

사용 예시: 포지션 수수료 조회

import {PoolStateLibrary} from "hookmate/libraries/PoolStateLibrary.sol";
import {PoolId, PoolIdLibrary} from "v4-core/src/types/PoolId.sol";

...

using PoolIdLibrary for PoolKey;

...

IPoolManager manager = address(0xABC);
address liquidityOwner = address(0x123); // likely will be PoolModifyLiquidityTest
int24 tickLower = -60;
int24 tickUpper = 60;
PoolKey memory key = PoolKey(...);

bytes32 positionId = keccak256(abi.encodePacked(address(liquidityOwner), tickLower, tickUpper));

(uint128 liquidity, uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) =
    PoolStateLibrary.getPositionInfo(manager, key.toId(), positionId);

도구 다운로드