Skip to content

Commit

Permalink
Merge pull request #9 from symbioticfi/statemind-fixes
Browse files Browse the repository at this point in the history
Fixes
  • Loading branch information
1kresh authored Dec 27, 2024
2 parents 2d75430 + e820445 commit f3e37c5
Show file tree
Hide file tree
Showing 12 changed files with 77 additions and 58 deletions.
2 changes: 1 addition & 1 deletion lib/core
Submodule core updated 228 files
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
"security"
],
"dependencies": {
"@openzeppelin/contracts": "5.0.2",
"@openzeppelin/contracts-upgradeable": "5.0.2",
"@symbioticfi/core": "1.0.0-devnet.5"
"@openzeppelin/contracts": "5.1.0",
"@openzeppelin/contracts-upgradeable": "5.1.0",
"@symbioticfi/core": "1.0.0-devnet.9"
}
}
16 changes: 9 additions & 7 deletions src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ contract FullRestakeResetHook is IFullRestakeResetHook {
*/
uint256 public immutable SLASH_COUNT;

mapping(address vault => mapping(address operator => CircularBuffer.Bytes32CircularBuffer buffer)) private
_slashings;
mapping(
address vault
=> mapping(bytes32 subnetwork => mapping(address operator => CircularBuffer.Bytes32CircularBuffer buffer))
) private _slashings;

constructor(uint48 period, uint256 slashCount) {
if (slashCount == 0) {
Expand Down Expand Up @@ -56,19 +58,19 @@ contract FullRestakeResetHook is IFullRestakeResetHook {
revert NotVaultDelegator();
}

if (_slashings[vault][operator].count() == 0) {
_slashings[vault][operator].setup(SLASH_COUNT);
if (_slashings[vault][subnetwork][operator].count() == 0) {
_slashings[vault][subnetwork][operator].setup(SLASH_COUNT);
}

if (IFullRestakeDelegator(msg.sender).operatorNetworkLimit(subnetwork, operator) == 0) {
return;
}

_slashings[vault][operator].push(bytes32(uint256(Time.timestamp())));
_slashings[vault][subnetwork][operator].push(bytes32(uint256(Time.timestamp())));

if (
_slashings[vault][operator].count() == SLASH_COUNT
&& Time.timestamp() - uint256(_slashings[vault][operator].last(SLASH_COUNT - 1)) <= PERIOD
_slashings[vault][subnetwork][operator].count() == SLASH_COUNT
&& Time.timestamp() - uint256(_slashings[vault][subnetwork][operator].last(SLASH_COUNT - 1)) <= PERIOD
) {
IFullRestakeDelegator(msg.sender).setOperatorNetworkLimit(subnetwork, operator, 0);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ contract NetworkRestakeResetHook is INetworkRestakeResetHook {
*/
uint256 public immutable SLASH_COUNT;

mapping(address vault => mapping(address operator => CircularBuffer.Bytes32CircularBuffer buffer)) private
_slashings;
mapping(
address vault
=> mapping(bytes32 subnetwork => mapping(address operator => CircularBuffer.Bytes32CircularBuffer buffer))
) private _slashings;

constructor(uint48 period, uint256 slashCount) {
if (slashCount == 0) {
Expand Down Expand Up @@ -56,19 +58,19 @@ contract NetworkRestakeResetHook is INetworkRestakeResetHook {
revert NotVaultDelegator();
}

if (_slashings[vault][operator].count() == 0) {
_slashings[vault][operator].setup(SLASH_COUNT);
if (_slashings[vault][subnetwork][operator].count() == 0) {
_slashings[vault][subnetwork][operator].setup(SLASH_COUNT);
}

if (INetworkRestakeDelegator(msg.sender).operatorNetworkShares(subnetwork, operator) == 0) {
return;
}

_slashings[vault][operator].push(bytes32(uint256(Time.timestamp())));
_slashings[vault][subnetwork][operator].push(bytes32(uint256(Time.timestamp())));

if (
_slashings[vault][operator].count() == SLASH_COUNT
&& Time.timestamp() - uint256(_slashings[vault][operator].last(SLASH_COUNT - 1)) <= PERIOD
_slashings[vault][subnetwork][operator].count() == SLASH_COUNT
&& Time.timestamp() - uint256(_slashings[vault][subnetwork][operator].last(SLASH_COUNT - 1)) <= PERIOD
) {
INetworkRestakeDelegator(msg.sender).setOperatorNetworkShares(subnetwork, operator, 0);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ contract OperatorSpecificResetHook is IOperatorSpecificResetHook {
*/
uint256 public immutable SLASH_COUNT;

mapping(address vault => CircularBuffer.Bytes32CircularBuffer buffer) private _slashings;
mapping(address vault => mapping(bytes32 subnetwork => CircularBuffer.Bytes32CircularBuffer buffer)) private
_slashings;

constructor(uint48 period, uint256 slashCount) {
if (slashCount == 0) {
Expand Down Expand Up @@ -55,19 +56,19 @@ contract OperatorSpecificResetHook is IOperatorSpecificResetHook {
revert NotVaultDelegator();
}

if (_slashings[vault].count() == 0) {
_slashings[vault].setup(SLASH_COUNT);
if (_slashings[vault][subnetwork].count() == 0) {
_slashings[vault][subnetwork].setup(SLASH_COUNT);
}

if (IOperatorSpecificDelegator(msg.sender).networkLimit(subnetwork) == 0) {
return;
}

_slashings[vault].push(bytes32(uint256(Time.timestamp())));
_slashings[vault][subnetwork].push(bytes32(uint256(Time.timestamp())));

if (
_slashings[vault].count() == SLASH_COUNT
&& Time.timestamp() - uint256(_slashings[vault].last(SLASH_COUNT - 1)) <= PERIOD
_slashings[vault][subnetwork].count() == SLASH_COUNT
&& Time.timestamp() - uint256(_slashings[vault][subnetwork].last(SLASH_COUNT - 1)) <= PERIOD
) {
IOperatorSpecificDelegator(msg.sender).setNetworkLimit(subnetwork, 0);
}
Expand Down
14 changes: 8 additions & 6 deletions test/fullRestakeDelegator/FullRestakeDecreaseHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol";

import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";

import {FullRestakeDecreaseHook} from "../../src/contracts/fullRestakeDelegator/FullRestakeDecreaseHook.sol";
Expand All @@ -28,6 +29,7 @@ contract FullRestakeDecreaseHookTest is POCBaseTest {
Slasher public slasher0;

function setUp() public override {
SYMBIOTIC_CORE_PROJECT_ROOT = "lib/core/";
super.setUp();
}

Expand All @@ -54,8 +56,8 @@ contract FullRestakeDecreaseHookTest is POCBaseTest {

vm.startPrank(alice);
delegator2.setHook(hook);
delegator2.grantRole(delegator2.NETWORK_LIMIT_SET_ROLE(), hook);
delegator2.grantRole(delegator2.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator2)).grantRole(delegator2.NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator2)).grantRole(delegator2.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down Expand Up @@ -152,7 +154,7 @@ contract FullRestakeDecreaseHookTest is POCBaseTest {
operatorNetworkLimitSetRoleHolders[0] = alice;
(address vault_, address delegator_, address slasher_) = vaultConfigurator.create(
IVaultConfigurator.InitParams({
version: vaultFactory.lastVersion(),
version: 1,
owner: alice,
vaultParams: abi.encode(
IVault.InitParams({
Expand All @@ -169,7 +171,7 @@ contract FullRestakeDecreaseHookTest is POCBaseTest {
depositLimitSetRoleHolder: alice
})
),
delegatorIndex: 3,
delegatorIndex: delegatorFactory.totalTypes() - 1,
delegatorParams: abi.encode(
IFullRestakeDelegator.InitParams({
baseParams: IBaseDelegator.BaseParams({
Expand All @@ -191,8 +193,8 @@ contract FullRestakeDecreaseHookTest is POCBaseTest {

vm.startPrank(alice);
delegator0.setHook(hook);
delegator0.grantRole(delegator0.NETWORK_LIMIT_SET_ROLE(), hook);
delegator0.grantRole(delegator0.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator0)).grantRole(delegator0.NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator0)).grantRole(delegator0.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down
10 changes: 6 additions & 4 deletions test/fullRestakeDelegator/FullRestakeResetHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol";

import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";

import {FullRestakeResetHook} from "../../src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol";
Expand All @@ -30,6 +31,7 @@ contract FullRestakeResetHookTest is POCBaseTest {
Slasher public slasher0;

function setUp() public override {
SYMBIOTIC_CORE_PROJECT_ROOT = "lib/core/";
super.setUp();
}

Expand All @@ -48,7 +50,7 @@ contract FullRestakeResetHookTest is POCBaseTest {

vm.startPrank(alice);
delegator2.setHook(hook);
delegator2.grantRole(delegator2.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator2)).grantRole(delegator2.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down Expand Up @@ -150,7 +152,7 @@ contract FullRestakeResetHookTest is POCBaseTest {
operatorNetworkLimitSetRoleHolders[0] = alice;
(address vault_, address delegator_, address slasher_) = vaultConfigurator.create(
IVaultConfigurator.InitParams({
version: vaultFactory.lastVersion(),
version: 1,
owner: alice,
vaultParams: abi.encode(
IVault.InitParams({
Expand All @@ -167,7 +169,7 @@ contract FullRestakeResetHookTest is POCBaseTest {
depositLimitSetRoleHolder: alice
})
),
delegatorIndex: 3,
delegatorIndex: delegatorFactory.totalTypes() - 1,
delegatorParams: abi.encode(
IFullRestakeDelegator.InitParams({
baseParams: IBaseDelegator.BaseParams({
Expand Down Expand Up @@ -256,7 +258,7 @@ contract FullRestakeResetHookTest is POCBaseTest {

vm.startPrank(alice);
delegator2.setHook(hook);
delegator2.grantRole(delegator2.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator2)).grantRole(delegator2.OPERATOR_NETWORK_LIMIT_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down
14 changes: 8 additions & 6 deletions test/networkRestakeDelegator/NetworkRestakeDecreaseHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol";

import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";

import {NetworkRestakeDecreaseHook} from "../../src/contracts/networkRestakeDelegator/NetworkRestakeDecreaseHook.sol";
Expand All @@ -28,6 +29,7 @@ contract NetworkRestakeDecreaseHookTest is POCBaseTest {
Slasher public slasher0;

function setUp() public override {
SYMBIOTIC_CORE_PROJECT_ROOT = "lib/core/";
super.setUp();
}

Expand All @@ -54,8 +56,8 @@ contract NetworkRestakeDecreaseHookTest is POCBaseTest {

vm.startPrank(alice);
delegator1.setHook(hook);
delegator1.grantRole(delegator1.NETWORK_LIMIT_SET_ROLE(), hook);
delegator1.grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
AccessControl(address(delegator1)).grantRole(delegator1.NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator1)).grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down Expand Up @@ -168,7 +170,7 @@ contract NetworkRestakeDecreaseHookTest is POCBaseTest {
operatorNetworkSharesSetRoleHolders[0] = alice;
(address vault_, address delegator_, address slasher_) = vaultConfigurator.create(
IVaultConfigurator.InitParams({
version: vaultFactory.lastVersion(),
version: 1,
owner: alice,
vaultParams: abi.encode(
IVault.InitParams({
Expand All @@ -185,7 +187,7 @@ contract NetworkRestakeDecreaseHookTest is POCBaseTest {
depositLimitSetRoleHolder: alice
})
),
delegatorIndex: 3,
delegatorIndex: delegatorFactory.totalTypes() - 1,
delegatorParams: abi.encode(
INetworkRestakeDelegator.InitParams({
baseParams: IBaseDelegator.BaseParams({
Expand All @@ -207,8 +209,8 @@ contract NetworkRestakeDecreaseHookTest is POCBaseTest {

vm.startPrank(alice);
delegator0.setHook(hook);
delegator0.grantRole(delegator0.NETWORK_LIMIT_SET_ROLE(), hook);
delegator0.grantRole(delegator0.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
AccessControl(address(delegator0)).grantRole(delegator0.NETWORK_LIMIT_SET_ROLE(), hook);
AccessControl(address(delegator0)).grantRole(delegator0.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol";

import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";

import {NetworkRestakeRedistributeHook} from
Expand All @@ -29,6 +30,7 @@ contract NetworkRestakeRedistributeHookTest is POCBaseTest {
Slasher public slasher0;

function setUp() public override {
SYMBIOTIC_CORE_PROJECT_ROOT = "lib/core/";
super.setUp();
}

Expand All @@ -52,7 +54,7 @@ contract NetworkRestakeRedistributeHookTest is POCBaseTest {

vm.startPrank(alice);
delegator1.setHook(hook);
delegator1.grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
AccessControl(address(delegator1)).grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down Expand Up @@ -133,7 +135,7 @@ contract NetworkRestakeRedistributeHookTest is POCBaseTest {
operatorNetworkSharesSetRoleHolders[0] = alice;
(address vault_, address delegator_, address slasher_) = vaultConfigurator.create(
IVaultConfigurator.InitParams({
version: vaultFactory.lastVersion(),
version: 1,
owner: alice,
vaultParams: abi.encode(
IVault.InitParams({
Expand All @@ -150,7 +152,7 @@ contract NetworkRestakeRedistributeHookTest is POCBaseTest {
depositLimitSetRoleHolder: alice
})
),
delegatorIndex: 3,
delegatorIndex: delegatorFactory.totalTypes() - 1,
delegatorParams: abi.encode(
INetworkRestakeDelegator.InitParams({
baseParams: IBaseDelegator.BaseParams({
Expand Down
10 changes: 6 additions & 4 deletions test/networkRestakeDelegator/NetworkRestakeResetHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol";
import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol";

import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
import {Subnetwork} from "@symbioticfi/core/src/contracts/libraries/Subnetwork.sol";

import {NetworkRestakeResetHook} from "../../src/contracts/networkRestakeDelegator/NetworkRestakeResetHook.sol";
Expand All @@ -30,6 +31,7 @@ contract NetworkRestakeResetHookTest is POCBaseTest {
Slasher public slasher0;

function setUp() public override {
SYMBIOTIC_CORE_PROJECT_ROOT = "lib/core/";
super.setUp();
}

Expand All @@ -48,7 +50,7 @@ contract NetworkRestakeResetHookTest is POCBaseTest {

vm.startPrank(alice);
delegator1.setHook(hook);
delegator1.grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
AccessControl(address(delegator1)).grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down Expand Up @@ -157,7 +159,7 @@ contract NetworkRestakeResetHookTest is POCBaseTest {
operatorNetworkSharesSetRoleHolders[0] = alice;
(address vault_, address delegator_, address slasher_) = vaultConfigurator.create(
IVaultConfigurator.InitParams({
version: vaultFactory.lastVersion(),
version: 1,
owner: alice,
vaultParams: abi.encode(
IVault.InitParams({
Expand All @@ -174,7 +176,7 @@ contract NetworkRestakeResetHookTest is POCBaseTest {
depositLimitSetRoleHolder: alice
})
),
delegatorIndex: 3,
delegatorIndex: delegatorFactory.totalTypes() - 1,
delegatorParams: abi.encode(
INetworkRestakeDelegator.InitParams({
baseParams: IBaseDelegator.BaseParams({
Expand Down Expand Up @@ -264,7 +266,7 @@ contract NetworkRestakeResetHookTest is POCBaseTest {

vm.startPrank(alice);
delegator1.setHook(hook);
delegator1.grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
AccessControl(address(delegator1)).grantRole(delegator1.OPERATOR_NETWORK_SHARES_SET_ROLE(), hook);
vm.stopPrank();

address network = alice;
Expand Down
Loading

0 comments on commit f3e37c5

Please sign in to comment.