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

Feat/staking vault init #886

Merged
merged 5 commits into from
Nov 29, 2024
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
9 changes: 7 additions & 2 deletions contracts/0.8.25/Accounting.sol
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,20 @@ contract Accounting is VaultHub {
ILido public immutable LIDO;

constructor(
address _admin,
ILidoLocator _lidoLocator,
ILido _lido,
address _treasury
) VaultHub(_admin, _lido, _treasury) {
) VaultHub(_lido, _treasury) {
LIDO_LOCATOR = _lidoLocator;
LIDO = _lido;
}

function initialize(address _admin) external initializer {
if (_admin == address(0)) revert ZeroArgument("_admin");

__VaultHub_init(_admin);
}

/// @notice calculates all the state changes that is required to apply the report
/// @param _report report values
/// @param _withdrawalShareRate maximum share rate used for withdrawal resolution
Expand Down
35 changes: 18 additions & 17 deletions contracts/0.8.25/vaults/StakingVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {Versioned} from "../utils/Versioned.sol";

// TODO: extract interface and implement it

contract StakingVault is IStakingVault, IBeaconProxy, VaultBeaconChainDepositor, OwnableUpgradeable, Versioned {
contract StakingVault is IStakingVault, IBeaconProxy, VaultBeaconChainDepositor, OwnableUpgradeable {
/// @custom:storage-location erc7201:StakingVault.Vault
struct VaultStorage {
IStakingVault.Report report;
Expand All @@ -25,8 +25,7 @@ contract StakingVault is IStakingVault, IBeaconProxy, VaultBeaconChainDepositor,
int128 inOutDelta;
}

uint256 private constant _version = 1;
address private immutable _SELF;
uint64 private constant _version = 1;
VaultHub public immutable VAULT_HUB;

/// keccak256(abi.encode(uint256(keccak256("StakingVault.Vault")) - 1)) & ~bytes32(uint256(0xff));
Expand All @@ -39,32 +38,34 @@ contract StakingVault is IStakingVault, IBeaconProxy, VaultBeaconChainDepositor,
) VaultBeaconChainDepositor(_beaconChainDepositContract) {
if (_vaultHub == address(0)) revert ZeroArgument("_vaultHub");

_SELF = address(this);
VAULT_HUB = VaultHub(_vaultHub);

_disableInitializers();
}

modifier onlyBeacon() {
if (msg.sender != getBeacon()) revert SenderShouldBeBeacon(msg.sender, getBeacon());
_;
}

/// @notice Initialize the contract storage explicitly.
/// The initialize function selector is not changed. For upgrades use `_params` variable
///
/// @param _owner owner address that can TBD
/// @param _owner vault owner address
/// @param _params the calldata for initialize contract after upgrades
// solhint-disable-next-line no-unused-vars
function initialize(address _owner, bytes calldata _params) external {
if (_owner == address(0)) revert ZeroArgument("_owner");

if (address(this) == _SELF) {
revert NonProxyCallsForbidden();
}

_initializeContractVersionTo(1);

_transferOwnership(_owner);
function initialize(address _owner, bytes calldata _params) external onlyBeacon initializer {
__Ownable_init(_owner);
}

function version() public pure virtual returns(uint256) {
function version() public pure virtual returns(uint64) {
return _version;
}

function getInitializedVersion() public view returns (uint64) {
return _getInitializedVersion();
}

function getBeacon() public view returns (address) {
return ERC1967Utils.getBeacon();
}
Expand Down Expand Up @@ -228,5 +229,5 @@ contract StakingVault is IStakingVault, IBeaconProxy, VaultBeaconChainDepositor,
error NotHealthy();
error NotAuthorized(string operation, address sender);
error LockedCannotBeDecreased(uint256 locked);
error NonProxyCallsForbidden();
error SenderShouldBeBeacon(address sender, address beacon);
}
Loading
Loading