// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import {Script, console} from "forge-std/Script.sol";
import {VmSafe} from "forge-std/Vm.sol";
import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
import {GoldCreatorFeeHook} from "../src/hooks/GoldCreatorFeeHook.sol";
contract GoldCreatorFeeHookDeployer {
event HookDeployed(address indexed hook, bytes32 indexed salt);
function deploy(bytes32 salt, IPoolManager poolManager, address gold, address feeRecipient)
external
returns (GoldCreatorFeeHook hook)
{
hook = new GoldCreatorFeeHook{salt: salt}(poolManager, gold, feeRecipient);
emit HookDeployed(address(hook), salt);
}
}
/// @notice Deploys GoldCreatorFeeHook at an address with the required v4 hook permission bits.
///
/// Required env:
/// - PRIVATE_KEY
/// - GOLD
/// - FEE_RECIPIENT
///
contract DeployGoldCreatorFeeHook is Script {
address internal constant POOL_MANAGER_4663 = 0x8366a39CC670B4001A1121B8F6A443A643e40951;
uint160 internal constant HOOK_FLAGS = (1 << 13) | (1 << 6) | (1 << 2);
uint160 internal constant HOOK_MASK = (1 << 14) - 1;
function run() external returns (GoldCreatorFeeHook hook) {
require(block.chainid == 4663, "DeployGoldCreatorFeeHook: Robinhood mainnet only");
uint256 pk = vm.envUint("PRIVATE_KEY");
address gold = vm.envAddress("GOLD");
address feeRecipient = vm.envAddress("FEE_RECIPIENT");
bytes memory hookBytecode = abi.encodePacked(
type(GoldCreatorFeeHook).creationCode, abi.encode(IPoolManager(POOL_MANAGER_4663), gold, feeRecipient)
);
vm.startBroadcast(pk);
GoldCreatorFeeHookDeployer deployer = new GoldCreatorFeeHookDeployer();
bytes32 salt = _mineSalt(address(deployer), keccak256(hookBytecode));
hook = deployer.deploy(salt, IPoolManager(POOL_MANAGER_4663), gold, feeRecipient);
vm.stopBroadcast();
console.log("Hook deployer: ", address(deployer));
console.log("Hook: ", address(hook));
console.log("PoolManager: ", POOL_MANAGER_4663);
console.log("GOLD: ", gold);
console.log("Fee recipient: ", feeRecipient);
console.log("Creator fee bps:", hook.CREATOR_FEE_BPS());
console.logBytes32(salt);
if (_isBroadcast()) {
string memory json = "hookDeployment";
vm.serializeAddress(json, "hook", address(hook));
vm.serializeAddress(json, "gold", gold);
vm.serializeAddress(json, "poolManager", POOL_MANAGER_4663);
vm.serializeAddress(json, "feeRecipient", feeRecipient);
vm.serializeUint(json, "creatorFeeBps", hook.CREATOR_FEE_BPS());
vm.serializeBytes32(json, "salt", salt);
string memory out = vm.serializeUint(json, "chainId", block.chainid);
vm.writeJson(out, "./gold-hook-deployment.json");
} else {
console.log("Dry run: gold-hook-deployment.json was not written");
}
}
function _mineSalt(address deployer, bytes32 initCodeHash) private view returns (bytes32 salt) {
uint256 offset = vm.envOr("SALT_OFFSET", uint256(0));
for (uint256 i = offset; i < offset + 5_000_000; i++) {
salt = bytes32(i);
address predicted = _computeCreate2(deployer, salt, initCodeHash);
if (uint160(predicted) & HOOK_MASK == HOOK_FLAGS) return salt;
}
revert("DeployGoldCreatorFeeHook: salt not found");
}
function _computeCreate2(address deployer, bytes32 salt, bytes32 initCodeHash) private pure returns (address) {
return address(uint160(uint256(keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, initCodeHash)))));
}
function _isBroadcast() private view returns (bool) {
return vm.isContext(VmSafe.ForgeContext.ScriptBroadcast)
|| vm.isContext(VmSafe.ForgeContext.ScriptResume);
}
}[
{
"name": "HookDeployed",
"type": "event",
"inputs": [
{
"name": "hook",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "deploy",
"type": "function",
"inputs": [
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "poolManager",
"type": "address",
"internalType": "contract IPoolManager"
},
{
"name": "gold",
"type": "address",
"internalType": "address"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "hook",
"type": "address",
"internalType": "contract GoldCreatorFeeHook"
}
],
"stateMutability": "nonpayable"
}
]0x6080806040523461001657610d6f908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b6000803560e01c63ae417c191461002957600080fd5b3461010e57608036600319011261010e576001600160a01b0391600435906024358481169081900361010a57604435858116809103610106576064359086821680920361010257610c2884810193906001600160401b038511868610176100ee579285949192879693606095610112863983526020830152604082015203019084f59283156100e3576020931690817f20723cf4e0ce4009ffa533c784c16cee0dfcbe4bdb0726213d600f19edc566136040519480a38152f35b6040513d84823e3d90fd5b634e487b7160e01b88526041600452602488fd5b8580fd5b8480fd5b8380fd5b80fdfe60e034620002f757601f62000c2838819003918201601f19168301926001600160401b0392909183851183861017620002ae578160609284926040978852833981010312620002f75780516001600160a01b0380821692909190838203620002f7576200007c866200007460208401620002fc565b9201620002fc565b9315620002e6578216918215620002d557831615620002c45760805260a05260c0528151906101c0820190811182821017620002ae57825260019081815260009182602083015282848301528260608301528260808301528260a08301528260c08301528060e0830152826101a0610100938285820152826101208201528261014082015283610160820152826101808201520152612000301615158114918215926200029f575b821562000290575b821562000281575b821562000272575b821562000265575b50811562000257575b811562000247575b811562000239575b81156200022b575b81156200021d575b81156200020c575b8115620001fe575b8115620001f1575b50620001de57505161091690816200031282396080518181816101670152818161026e015281816102fc01526106db015260a05181818160f3015281816102210152610895015260c05181818161042b015261072b0152f35b630732d7b560e51b815230600452602490fd5b9050301615153862000185565b30600216151591506200017d565b306004161515811415915062000175565b30600816151591506200016d565b306010161515915062000165565b30602016151591506200015d565b3084161515811415915062000155565b30608016151591506200014d565b3016151591503862000144565b3061020016151592506200013c565b30610400161515925062000134565b3061080016151592506200012c565b30611000161515925062000124565b634e487b7160e01b600052604160045260246000fd5b8451634e46966960e11b8152600490fd5b855163604fdec760e01b8152600490fd5b855163bc12814760e01b8152600490fd5b600080fd5b51906001600160a01b0382168203620002f75756fe608060408181526004918236101561001657600080fd5b600092833560e01c918263096949a21461047c5750816321d0ee701461045a578163249d39e91461045f578163259982e51461045a5781634690484014610416578163575e24b4146103b15781636c2bbe7e146103605781636fe7e6eb146103655781639f063efc14610360578163b47b2fb1146102a2578163b6a8b0fa14610126578163cc3cbd2a1461029d578163d55be8c61461029d578163dc4c90d314610259578163dc98354e1461012b57508063e1b4af69146101265763fbec6f21146100e057600080fd5b34610122578160031936011261012257517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b6105ce565b82843461020c5760e036600319011261020c576101466104a4565b5060a036602319011261020c5761015b6105b8565b906001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036102495760243582811680910361012257159081159161020f575b81156101f3575b506101e4576d117822cdf264ebd2d6fe713de1ac9116036101d75751636e4c1aa760e11b8152602090f35b516359e6ae3360e11b8152fd5b505051633d89017360e01b8152fd5b60a435838116925082900361020c5750301415856101ac565b80fd5b905060443582811680910361012257827f0000000000000000000000000000000000000000000000000000000000000000161415906101a5565b5050505163f655705d60e01b8152fd5b505034610122578160031936011261012257517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b61061e565b82843461020c5761016036600319011261020c576102be6104a4565b9060a036602319011261020c5760603660c319011261020c5761014435906001600160401b03821161020c57506102f890369085016104bf565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036103525761033890610124359061063a565b82516001600160e01b03199092168252600f0b6020820152f35b505163f655705d60e01b8152fd5b61055c565b82843461020c5761010036600319011261020c576103816104a4565b5060a036602319011261020c576103966105b8565b5060e4358060020b0361020c575051630a85dc2960e01b8152fd5b82843461020c5761014036600319011261020c576103cd6104a4565b5060a036602319011261020c5760603660c319011261020c5761012435906001600160401b03821161020c575061040790369084016104bf565b505051630a85dc2960e01b8152fd5b505034610122578160031936011261012257517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6104ec565b505034610122578160031936011261012257602090516127108152f35b849034610122578160031936011261012257806d117822cdf264ebd2d6fe713de1ac60209252f35b600435906001600160a01b03821682036104ba57565b600080fd5b9181601f840112156104ba578235916001600160401b0383116104ba57602083818601950101116104ba57565b346104ba576101603660031901126104ba576004356001600160a01b038116036104ba5760a03660231901126104ba5760803660c31901126104ba57610144356001600160401b0381116104ba576105489036906004016104bf565b5050604051630a85dc2960e01b8152600490fd5b346104ba576101a03660031901126104ba576004356001600160a01b038116036104ba5760a03660231901126104ba5760803660c31901126104ba57610184356001600160401b0381116104ba576105489036906004016104bf565b60c435906001600160a01b03821682036104ba57565b346104ba576101203660031901126104ba576004356001600160a01b038116036104ba5760a03660231901126104ba57610104356001600160401b0381116104ba576105489036906004016104bf565b346104ba5760003660031901126104ba57602060405160648152f35b91906000906024356001600160a01b03818116918290036108bc578115801590610884575b801561086e575b61085c5760c4359182151580930361084c57828560e43512146000146108505750604435818116810361084c5792600f0b5b80600f0b858112610833575b508481600f0b12610824576001600160801b0316606481810291808304909114901517156108105761271090049586156107fd57817f00000000000000000000000000000000000000000000000000000000000000001693843b156107f9579085808460648b989796956040519485938492630b0d9c0960e01b845216998a6004840152887f0000000000000000000000000000000000000000000000000000000000000000169b8c602485015260448401525af180156107ee576107b1575b506000805160206108c1833981519152916040918251948a865260208601521692a46001607f1b8310156107a2575063b47b2fb160e01b91600f0b90565b6393dafdf160e01b8152600490fd5b9095906001600160401b0381116107da57604052946000805160206108c1833981519152610764565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8580fd5b5063b47b2fb160e01b9550929392505050565b634e487b7160e01b85526011600452602485fd5b6393dafdf160e01b8552600485fd5b905060016001607f1b03198114610810578403386106a4565b8480fd5b9260801d600f0b610698565b604051633d89017360e01b8152600490fd5b5060a43581811680910361084c57301415610666565b5060443581811680910361084c57817f000000000000000000000000000000000000000000000000000000000000000016141561065f565b8380fdfea831506e4550f06c9727a46c6f2bae86b16b214df648c1e4b089839bbd92c0fda26469706673582212200594843ea87a623dc67f25406e38912fd94f64547061bc4a691f7b632553a67264736f6c63430008180033a264697066735822122028a12a69f03b45e348e789c5a4889cb6099666fc2e7576634a613d69f3f76dce64736f6c63430008180033
0x608080604052600436101561001357600080fd5b6000803560e01c63ae417c191461002957600080fd5b3461010e57608036600319011261010e576001600160a01b0391600435906024358481169081900361010a57604435858116809103610106576064359086821680920361010257610c2884810193906001600160401b038511868610176100ee579285949192879693606095610112863983526020830152604082015203019084f59283156100e3576020931690817f20723cf4e0ce4009ffa533c784c16cee0dfcbe4bdb0726213d600f19edc566136040519480a38152f35b6040513d84823e3d90fd5b634e487b7160e01b88526041600452602488fd5b8580fd5b8480fd5b8380fd5b80fdfe60e034620002f757601f62000c2838819003918201601f19168301926001600160401b0392909183851183861017620002ae578160609284926040978852833981010312620002f75780516001600160a01b0380821692909190838203620002f7576200007c866200007460208401620002fc565b9201620002fc565b9315620002e6578216918215620002d557831615620002c45760805260a05260c0528151906101c0820190811182821017620002ae57825260019081815260009182602083015282848301528260608301528260808301528260a08301528260c08301528060e0830152826101a0610100938285820152826101208201528261014082015283610160820152826101808201520152612000301615158114918215926200029f575b821562000290575b821562000281575b821562000272575b821562000265575b50811562000257575b811562000247575b811562000239575b81156200022b575b81156200021d575b81156200020c575b8115620001fe575b8115620001f1575b50620001de57505161091690816200031282396080518181816101670152818161026e015281816102fc01526106db015260a05181818160f3015281816102210152610895015260c05181818161042b015261072b0152f35b630732d7b560e51b815230600452602490fd5b9050301615153862000185565b30600216151591506200017d565b306004161515811415915062000175565b30600816151591506200016d565b306010161515915062000165565b30602016151591506200015d565b3084161515811415915062000155565b30608016151591506200014d565b3016151591503862000144565b3061020016151592506200013c565b30610400161515925062000134565b3061080016151592506200012c565b30611000161515925062000124565b634e487b7160e01b600052604160045260246000fd5b8451634e46966960e11b8152600490fd5b855163604fdec760e01b8152600490fd5b855163bc12814760e01b8152600490fd5b600080fd5b51906001600160a01b0382168203620002f75756fe608060408181526004918236101561001657600080fd5b600092833560e01c918263096949a21461047c5750816321d0ee701461045a578163249d39e91461045f578163259982e51461045a5781634690484014610416578163575e24b4146103b15781636c2bbe7e146103605781636fe7e6eb146103655781639f063efc14610360578163b47b2fb1146102a2578163b6a8b0fa14610126578163cc3cbd2a1461029d578163d55be8c61461029d578163dc4c90d314610259578163dc98354e1461012b57508063e1b4af69146101265763fbec6f21146100e057600080fd5b34610122578160031936011261012257517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b6105ce565b82843461020c5760e036600319011261020c576101466104a4565b5060a036602319011261020c5761015b6105b8565b906001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036102495760243582811680910361012257159081159161020f575b81156101f3575b506101e4576d117822cdf264ebd2d6fe713de1ac9116036101d75751636e4c1aa760e11b8152602090f35b516359e6ae3360e11b8152fd5b505051633d89017360e01b8152fd5b60a435838116925082900361020c5750301415856101ac565b80fd5b905060443582811680910361012257827f0000000000000000000000000000000000000000000000000000000000000000161415906101a5565b5050505163f655705d60e01b8152fd5b505034610122578160031936011261012257517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b61061e565b82843461020c5761016036600319011261020c576102be6104a4565b9060a036602319011261020c5760603660c319011261020c5761014435906001600160401b03821161020c57506102f890369085016104bf565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036103525761033890610124359061063a565b82516001600160e01b03199092168252600f0b6020820152f35b505163f655705d60e01b8152fd5b61055c565b82843461020c5761010036600319011261020c576103816104a4565b5060a036602319011261020c576103966105b8565b5060e4358060020b0361020c575051630a85dc2960e01b8152fd5b82843461020c5761014036600319011261020c576103cd6104a4565b5060a036602319011261020c5760603660c319011261020c5761012435906001600160401b03821161020c575061040790369084016104bf565b505051630a85dc2960e01b8152fd5b505034610122578160031936011261012257517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6104ec565b505034610122578160031936011261012257602090516127108152f35b849034610122578160031936011261012257806d117822cdf264ebd2d6fe713de1ac60209252f35b600435906001600160a01b03821682036104ba57565b600080fd5b9181601f840112156104ba578235916001600160401b0383116104ba57602083818601950101116104ba57565b346104ba576101603660031901126104ba576004356001600160a01b038116036104ba5760a03660231901126104ba5760803660c31901126104ba57610144356001600160401b0381116104ba576105489036906004016104bf565b5050604051630a85dc2960e01b8152600490fd5b346104ba576101a03660031901126104ba576004356001600160a01b038116036104ba5760a03660231901126104ba5760803660c31901126104ba57610184356001600160401b0381116104ba576105489036906004016104bf565b60c435906001600160a01b03821682036104ba57565b346104ba576101203660031901126104ba576004356001600160a01b038116036104ba5760a03660231901126104ba57610104356001600160401b0381116104ba576105489036906004016104bf565b346104ba5760003660031901126104ba57602060405160648152f35b91906000906024356001600160a01b03818116918290036108bc578115801590610884575b801561086e575b61085c5760c4359182151580930361084c57828560e43512146000146108505750604435818116810361084c5792600f0b5b80600f0b858112610833575b508481600f0b12610824576001600160801b0316606481810291808304909114901517156108105761271090049586156107fd57817f00000000000000000000000000000000000000000000000000000000000000001693843b156107f9579085808460648b989796956040519485938492630b0d9c0960e01b845216998a6004840152887f0000000000000000000000000000000000000000000000000000000000000000169b8c602485015260448401525af180156107ee576107b1575b506000805160206108c1833981519152916040918251948a865260208601521692a46001607f1b8310156107a2575063b47b2fb160e01b91600f0b90565b6393dafdf160e01b8152600490fd5b9095906001600160401b0381116107da57604052946000805160206108c1833981519152610764565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8580fd5b5063b47b2fb160e01b9550929392505050565b634e487b7160e01b85526011600452602485fd5b6393dafdf160e01b8552600485fd5b905060016001607f1b03198114610810578403386106a4565b8480fd5b9260801d600f0b610698565b604051633d89017360e01b8152600490fd5b5060a43581811680910361084c57301415610666565b5060443581811680910361084c57817f000000000000000000000000000000000000000000000000000000000000000016141561065f565b8380fdfea831506e4550f06c9727a46c6f2bae86b16b214df648c1e4b089839bbd92c0fda26469706673582212200594843ea87a623dc67f25406e38912fd94f64547061bc4a691f7b632553a67264736f6c63430008180033a264697066735822122028a12a69f03b45e348e789c5a4889cb6099666fc2e7576634a613d69f3f76dce64736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xadd7f8…a1e0e5 | 6 days agoTue, 11 Aug 2026 20:25:38 UTC | 0x20723c…6613 | [0] 0x000000000000…e9536044 [1] 0x000000000000…000003f4 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 33,948,329 | 6 days agoTue, 11 Aug 2026 20:25:38 UTC | 0xadd7f8…a1e0e5 | CREATE2 | deploy | 0xcf57…01bf | OUT | 0x504f…6044 | 0 ETH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xadd7f8…a1e0e5 | deploy | 33,948,329 | 6 days agoTue, 11 Aug 2026 20:25:38 UTC | 0x2745…ffbb | IN | GoldCreatorFeeHookDeployer | $0.000 ETH | 0.00001586 |