Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
hookmate — (Expérimental) Composants et utilitaires Solidity pour le développement de Hooks Uniswap v4 | Kitploit
Outils/GitHubGitHub/gmh5225/hookmate
Utilitaires GénérauxCryptographieUtilitaires et Frameworks
GitHubgmh5225/hookmate

hookmate

(Expérimental) Composants et utilitaires Solidity pour le développement de Hooks Uniswap v4

Voir le dépôt
20il y a 2 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

hookmate

Utilitaires, bibliothèques et composants Solidity expérimentaux pour le développement de Hooks Uniswap v4


Installation

nécessite foundry

forge install uniswapfoundation/hookmate

Documentation

Bibliothèques

PoolStateLibrary.sol

⚠️ Pas prêt pour la production. Comportera des changements majeurs à l'avenir ⚠️

jusqu'au gel du code de v4-core, les interfaces sont susceptibles de changer

Une bibliothèque Solidity pour accéder aux informations de Pool.State -- même les mappings imbriqués. Repose sur les lectures arbitraires de slots de stockage exposées via PoolManager.extsload

Chaque valeur dans mapping(PoolId id => Pool.State) public pools; est accessible via 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() (calculé en direct)
        | uint256 feeGrowthInside1LastX128;       // ..
}

Exemple d'utilisation : Obtenir les frais d'une position

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); // sera probablement 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);

Télécharger l’outil