Contract detail
t2Timelock
t2Timelock is a verified Robinhood Chain smart contract at 0x3ad3c8cc…c9590bed with 0 indexed transactions.
- Address type
- Smart contract
- Transactions
- 0
- History coverage
- No indexed activity found
- Emitted events
- 5
- Verification
- Verified
- Compiler
- 0.8.36+commit.8a079791
- Verification match
- full
- Creation transaction
- 0xac0e474d…3145b94e
- Created at block
- #28456177
- Language
- solidity
- EVM version
- osaka
- License
- none
- Compiler optimization
- Enabled · 1000 runs
Verified contract
Contract source code
// SPDX-License-Identifier: MIT
pragma solidity 0.8.36;
import "@openzeppelin/contracts/governance/TimelockController.sol";
contract t2Timelock is TimelockController {
error ZeroLaunchFingerprint();
bytes32 public immutable launchFingerprint;
constructor(
uint256 minDelay_,
address[] memory proposers_,
address[] memory executors_,
address admin_,
bytes32 launchFingerprint_
) TimelockController(minDelay_, proposers_, executors_, admin_) {
if (launchFingerprint_ == bytes32(0)) revert ZeroLaunchFingerprint();
if (_composeLaunchDigest(launchFingerprint_) == bytes32(0)) revert ZeroLaunchFingerprint();
launchFingerprint = launchFingerprint_;
}
function launchId() external view returns (bytes32) {
if (_composeLaunchDigest(launchFingerprint) == bytes32(0)) revert ZeroLaunchFingerprint();
return launchFingerprint;
}
function operationReady(bytes32 operationId) external view returns (bool) {
return isOperationReady(operationId);
}
function minimumDelay() external view returns (uint256) {
return getMinDelay();
}
function _foldMulmodPrime(bytes32 acc) private pure returns (bytes32) {
return bytes32(mulmod(uint256(acc), 0xff51afd7ed558ccd, type(uint256).max - 188));
}
function _foldShiftXorWide(bytes32 acc) private pure returns (bytes32) {
return bytes32(uint256(acc) ^ (uint256(acc) >> 128));
}
function _foldShiftXorLow(bytes32 acc) private pure returns (bytes32) {
unchecked { return bytes32(uint256(acc) ^ (uint256(acc) << 31)); }
}
function _foldKeccakPacked(bytes32 acc) private pure returns (bytes32) {
return keccak256(abi.encodePacked(acc));
}
function _foldKeccakPadded(bytes32 acc) private pure returns (bytes32) {
return keccak256(abi.encode(acc));
}
function _composeLaunchDigest(bytes32 acc) private pure returns (bytes32) {
return _foldKeccakPadded(_foldKeccakPacked(_foldShiftXorLow(_foldShiftXorWide(_foldMulmodPrime(acc)))));
}
}