Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ValidatorManager is PoA when deployed on its own #711

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
541 changes: 541 additions & 0 deletions abi-bindings/go/OwnableUpgradeable/OwnableUpgradeable.go

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

1,250 changes: 0 additions & 1,250 deletions abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go

This file was deleted.

261 changes: 228 additions & 33 deletions abi-bindings/go/validator-manager/ValidatorManager/ValidatorManager.go

Large diffs are not rendered by default.

Large diffs are not rendered by default.

22 changes: 9 additions & 13 deletions contracts/validator-manager/ERC20TokenStakingManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

pragma solidity 0.8.25;

import {PoSValidatorManager} from "./PoSValidatorManager.sol";
import {PoSValidatorManagerSettings} from "./interfaces/IPoSValidatorManager.sol";
import {StakingManager} from "./StakingManager.sol";
import {StakingManagerSettings} from "./interfaces/IStakingManager.sol";
import {IERC20TokenStakingManager, PChainOwner} from "./interfaces/IERC20TokenStakingManager.sol";
import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol";
import {ICMInitializable} from "@utilities/ICMInitializable.sol";
Expand All @@ -20,11 +20,7 @@ import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC
*
* @custom:security-contact https://github.com/ava-labs/icm-contracts/blob/main/SECURITY.md
*/
contract ERC20TokenStakingManager is
Initializable,
PoSValidatorManager,
IERC20TokenStakingManager
{
contract ERC20TokenStakingManager is Initializable, StakingManager, IERC20TokenStakingManager {
using SafeERC20 for IERC20Mintable;
using SafeERC20TransferFrom for IERC20Mintable;

Expand Down Expand Up @@ -67,18 +63,18 @@ contract ERC20TokenStakingManager is
* @param token The ERC20 token to be staked
*/
function initialize(
PoSValidatorManagerSettings calldata settings,
StakingManagerSettings calldata settings,
IERC20Mintable token
) external reinitializer(2) {
__ERC20TokenStakingManager_init(settings, token);
}

// solhint-disable-next-line func-name-mixedcase
function __ERC20TokenStakingManager_init(
PoSValidatorManagerSettings calldata settings,
StakingManagerSettings calldata settings,
IERC20Mintable token
) internal onlyInitializing {
__POS_Validator_Manager_init(settings);
__STAKING_MANAGER_init(settings);
__ERC20TokenStakingManager_init_unchained(token);
}

Expand Down Expand Up @@ -137,23 +133,23 @@ contract ERC20TokenStakingManager is
}

/**
* @notice See {PoSValidatorManager-_lock}
* @notice See {StakingManager-_lock}
* Note: Must be guarded with reentrancy guard for safe transfer from.
*/
function _lock(uint256 value) internal virtual override returns (uint256) {
return _getERC20StakingManagerStorage()._token.safeTransferFrom(value);
}

/**
* @notice See {PoSValidatorManager-_unlock}
* @notice See {StakingManager-_unlock}
* Note: Must be guarded with reentrancy guard for safe transfer.
*/
function _unlock(address to, uint256 value) internal virtual override {
_getERC20StakingManagerStorage()._token.safeTransfer(to, value);
}

/**
* @notice See {PoSValidatorManager-_reward}
* @notice See {StakingManager-_reward}
*/
function _reward(address account, uint256 amount) internal virtual override {
ERC20TokenStakingManagerStorage storage $ = _getERC20StakingManagerStorage();
Expand Down
22 changes: 9 additions & 13 deletions contracts/validator-manager/NativeTokenStakingManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

pragma solidity 0.8.25;

import {PoSValidatorManager} from "./PoSValidatorManager.sol";
import {PoSValidatorManagerSettings} from "./interfaces/IPoSValidatorManager.sol";
import {StakingManager} from "./StakingManager.sol";
import {StakingManagerSettings} from "./interfaces/IStakingManager.sol";
import {
INativeTokenStakingManager, PChainOwner
} from "./interfaces/INativeTokenStakingManager.sol";
Expand All @@ -22,11 +22,7 @@
*
* @custom:security-contact https://github.com/ava-labs/icm-contracts/blob/main/SECURITY.md
*/
contract NativeTokenStakingManager is
Initializable,
PoSValidatorManager,
INativeTokenStakingManager
{
contract NativeTokenStakingManager is Initializable, StakingManager, INativeTokenStakingManager {
using Address for address payable;

INativeMinter public constant NATIVE_MINTER =
Expand All @@ -44,17 +40,17 @@
* @param settings Initial settings for the PoS validator manager
*/
// solhint-disable ordering
function initialize(PoSValidatorManagerSettings calldata settings) external reinitializer(2) {
function initialize(StakingManagerSettings calldata settings) external reinitializer(2) {
__NativeTokenStakingManager_init(settings);
}

// solhint-disable-next-line func-name-mixedcase
function __NativeTokenStakingManager_init(PoSValidatorManagerSettings calldata settings)
function __NativeTokenStakingManager_init(StakingManagerSettings calldata settings)
internal
onlyInitializing
{
__POS_Validator_Manager_init(settings);
__STAKING_MANAGER_init(settings);
}

Check warning

Code scanning / Slither

Conformance to Solidity naming conventions Warning


// solhint-disable-next-line func-name-mixedcase, no-empty-blocks
function __NativeTokenStakingManager_init_unchained() internal onlyInitializing {}
Expand Down Expand Up @@ -96,21 +92,21 @@
}

/**
* @notice See {PoSValidatorManager-_lock}
* @notice See {StakingManager-_lock}
*/
function _lock(uint256 value) internal virtual override returns (uint256) {
return value;
}

/**
* @notice See {PoSValidatorManager-_unlock}
* @notice See {StakingManager-_unlock}
*/
function _unlock(address to, uint256 value) internal virtual override {
payable(to).sendValue(value);
}

/**
* @notice See {PoSValidatorManager-_reward}
* @notice See {StakingManager-_reward}
*/
function _reward(address account, uint256 amount) internal virtual override {
NATIVE_MINTER.mintNativeCoin(account, amount);
Expand Down
115 changes: 0 additions & 115 deletions contracts/validator-manager/PoAValidatorManager.sol

This file was deleted.

Loading
Loading