forked from Layr-Labs/eigenlayer-contracts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Slasher.sol
102 lines (75 loc) · 3.33 KB
/
Slasher.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.12;
import "../interfaces/ISlasher.sol";
import "../interfaces/IDelegationManager.sol";
import "../interfaces/IStrategyManager.sol";
import "../libraries/StructuredLinkedList.sol";
import "../permissions/Pausable.sol";
import "@openzeppelin-upgrades/contracts/access/OwnableUpgradeable.sol";
import "@openzeppelin-upgrades/contracts/proxy/utils/Initializable.sol";
/**
* @notice This contract is not in use as of the Eigenlayer M2 release.
*
* Although many contracts reference it as an immutable variable, they do not
* interact with it and it is effectively dead code. The Slasher was originally
* deployed during Eigenlayer M1, but remained paused and unused for the duration
* of that release as well.
*
* Eventually, slashing design will be finalized and the Slasher will be finished
* and more fully incorporated into the core contracts. For now, you can ignore this
* file. If you really want to see what the deployed M1 version looks like, check
* out the `init-mainnet-deployment` branch under "releases".
*
* This contract is a stub that maintains its original interface for use in testing
* and deploy scripts. Otherwise, it does nothing.
*/
contract Slasher is Initializable, OwnableUpgradeable, ISlasher, Pausable {
constructor(IStrategyManager, IDelegationManager) {}
function initialize(
address,
IPauserRegistry,
uint256
) external {}
function optIntoSlashing(address) external {}
function freezeOperator(address) external {}
function resetFrozenStatus(address[] calldata) external {}
function recordFirstStakeUpdate(address, uint32) external {}
function recordStakeUpdate(
address,
uint32,
uint32,
uint256
) external {}
function recordLastStakeUpdateAndRevokeSlashingAbility(address, uint32) external {}
function strategyManager() external view returns (IStrategyManager) {}
function delegation() external view returns (IDelegationManager) {}
function isFrozen(address) external view returns (bool) {}
function canSlash(address, address) external view returns (bool) {}
function contractCanSlashOperatorUntilBlock(
address,
address
) external view returns (uint32) {}
function latestUpdateBlock(address, address) external view returns (uint32) {}
function getCorrectValueForInsertAfter(address, uint32) external view returns (uint256) {}
function canWithdraw(
address,
uint32,
uint256
) external returns (bool) {}
function operatorToMiddlewareTimes(
address,
uint256
) external view returns (MiddlewareTimes memory) {}
function middlewareTimesLength(address) external view returns (uint256) {}
function getMiddlewareTimesIndexStalestUpdateBlock(address, uint32) external view returns (uint32) {}
function getMiddlewareTimesIndexServeUntilBlock(address, uint32) external view returns (uint32) {}
function operatorWhitelistedContractsLinkedListSize(address) external view returns (uint256) {}
function operatorWhitelistedContractsLinkedListEntry(
address,
address
) external view returns (bool, uint256, uint256) {}
function whitelistedContractDetails(
address,
address
) external view returns (MiddlewareDetails memory) {}
}