DegenHoodTokenDeployer
0x0b2804acd2c052b3ae00ac9125486b90e1e767f5
Verification
Verified
v0.8.28+commit.7893614a
Type
Contract
7,650 bytes
ABI entries
7
3 read · 1 write
License
none
Contract information
- Address
- 0x0b2804acd2c052b3ae00ac9125486b90e1e767f5
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.28+commit.7893614a
- Optimization
- Enabled
- Creator
- 0x5E6da3932B…33f7C5Ca9d
- Creation tx
- 0x7ab85901ec…ef127aa519
Token
Not a token
This contract does not expose ERC-20 metadata.
Read contract (3)
creationCodeHash() → bytes32
kernel() → address
predict(bytes32, tuple) → address
ABI
[
{
"inputs": [
{
"internalType": "address",
"name": "kernel_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidKernel",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "caller",
"type": "address"
}
],
"name": "UnauthorizedKernel",
"type": "error"
},
{
"inputs": [],
"name": "creationCodeHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "address",
"name": "module",
"type": "address"
},
{
"internalType": "address",
"name": "tokenAdmin",
"type": "address"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "string",
"name": "imageURI",
"type": "string"
}
],
"internalType": "struct DegenHoodTokenDeployer.TokenArgs",
"name": "args",
"type": "tuple"
}
],
"name": "deploy",
"outputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "kernel",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "address",
"name": "module",
"type": "address"
},
{
"internalType": "address",
"name": "tokenAdmin",
"type": "address"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "string",
"name": "imageURI",
"type": "string"
}
],
"internalType": "struct DegenHoodTokenDeployer.TokenArgs",
"name": "args",
"type": "tuple"
}
],
"name": "predict",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]Source code
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import {DegenHoodTokenV4} from "../token/DegenHoodTokenV4.sol";
/// @title DegenHoodTokenDeployer
/// @notice Immutable, kernel-only CREATE2 deployer for the fixed DegenHood token implementation.
contract DegenHoodTokenDeployer {
struct TokenArgs {
string name;
string symbol;
address module;
address tokenAdmin;
string contractURI;
string imageURI;
}
error InvalidKernel();
error UnauthorizedKernel(address caller);
address public immutable kernel;
constructor(address kernel_) {
if (kernel_ == address(0)) revert InvalidKernel();
kernel = kernel_;
}
function deploy(bytes32 salt, TokenArgs calldata args) external returns (address token) {
if (msg.sender != kernel) revert UnauthorizedKernel(msg.sender);
token = address(
new DegenHoodTokenV4{salt: salt}(
args.name,
args.symbol,
args.module,
args.tokenAdmin,
args.contractURI,
args.imageURI
)
);
}
function predict(bytes32 salt, TokenArgs calldata args) external view returns (address) {
bytes32 initCodeHash = _initCodeHash(args);
return address(
uint160(
uint256(
keccak256(abi.encodePacked(bytes1(0xff), address(this), salt, initCodeHash))
)
)
);
}
function creationCodeHash() external pure returns (bytes32) {
return keccak256(type(DegenHoodTokenV4).creationCode);
}
function _initCodeHash(TokenArgs calldata args) private pure returns (bytes32) {
return keccak256(
abi.encodePacked(
type(DegenHoodTokenV4).creationCode,
abi.encode(
args.name,
args.symbol,
args.module,
args.tokenAdmin,
args.contractURI,
args.imageURI
)
)
);
}
}
Chain explorer1915msChain node83ms