@@ -6,7 +6,7 @@ displayed_sidebar: buildSidebar
66---
77
88# AppRegistry
9- [ Git Source] ( https://github.com/layer-3/yellow/blob/f97fcc52ddfdc5918cb91b2af5538abb0060ee27 /src/AppRegistry.sol )
9+ [ Git Source] ( https://github.com/layer-3/yellow/blob/dcd9928fb0cdf7b35bc4cae06401284b2529d311 /src/AppRegistry.sol )
1010
1111** Inherits:**
1212[ Locker] ( /src/Locker.sol/abstract.Locker.md ) , [ ISlash] ( /src/interfaces/ISlash.sol/interface.ISlash.md ) , AccessControl
@@ -25,6 +25,10 @@ No collateral weight for parameter administration — this registry is purely fo
2525collateral management and slashing. See NodeRegistry for the parameter-administration-enabled
2626variant used by node operators.
2727Slashing can occur in both Locked and Unlocking states.
28+ Adjudicators are not economically incentivised by slash outcomes by design.
29+ Dispute initiators pay the adjudicator's handling fee off-chain (similar to
30+ arbitration forums / ODRP). This avoids creating perverse incentives around
31+ decision outcomes.
2832
2933
3034## State Variables
@@ -36,7 +40,7 @@ bytes32 public constant ADJUDICATOR_ROLE = keccak256("ADJUDICATOR_ROLE")
3640
3741
3842### slashCooldown
39- Minimum time (seconds) that must elapse between any two slash calls .
43+ Minimum time (seconds) that must elapse between consecutive slashes by the same adjudicator .
4044
4145
4246``` solidity
@@ -45,11 +49,21 @@ uint256 public slashCooldown
4549
4650
4751### lastSlashTimestamp
48- Timestamp of the last successful slash.
52+ Timestamp of the last successful slash per adjudicator .
4953
5054
5155``` solidity
52- uint256 public lastSlashTimestamp
56+ mapping(address => uint256) public lastSlashTimestamp
57+ ```
58+
59+
60+ ### minSlashAmount
61+ Minimum slash amount. Slashes below this are rejected unless ` amount == balance `
62+ (full-balance slash). Prevents zero-amount or dust slashes from resetting the cooldown.
63+
64+
65+ ``` solidity
66+ uint256 public minSlashAmount
5367```
5468
5569
@@ -63,7 +77,7 @@ constructor(address asset_, uint256 unlockPeriod_, address admin_) Locker(asset_
6377
6478### setSlashCooldown
6579
66- Sets the global cooldown between slash calls.
80+ Sets the per-adjudicator cooldown between slash calls.
6781
6882
6983``` solidity
@@ -76,6 +90,21 @@ function setSlashCooldown(uint256 newCooldown) external onlyRole(DEFAULT_ADMIN_R
7690| ` newCooldown ` | ` uint256 ` | The new cooldown in seconds (0 disables the cooldown).|
7791
7892
93+ ### setMinSlashAmount
94+
95+ Sets the minimum slash amount.
96+
97+
98+ ``` solidity
99+ function setMinSlashAmount(uint256 newAmount) external onlyRole(DEFAULT_ADMIN_ROLE);
100+ ```
101+ ** Parameters**
102+
103+ | Name| Type| Description|
104+ | ----| ----| -----------|
105+ | ` newAmount ` | ` uint256 ` | The new minimum amount (0 disables the minimum).|
106+
107+
79108### slash
80109
81110Reduces a user's locked balance and transfers the slashed tokens
@@ -105,6 +134,12 @@ function slash(address user, uint256 amount, address recipient, bytes calldata d
105134event SlashCooldownUpdated(uint256 oldCooldown, uint256 newCooldown);
106135```
107136
137+ ### MinSlashAmountUpdated
138+
139+ ``` solidity
140+ event MinSlashAmountUpdated(uint256 oldAmount, uint256 newAmount);
141+ ```
142+
108143## Errors
109144### SlashCooldownActive
110145
0 commit comments