diff --git a/contracts/StakeManager.sol b/contracts/StakeManager.sol new file mode 100644 index 0000000..35e45fd --- /dev/null +++ b/contracts/StakeManager.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.6.12; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract StakeManager is ERC20 { + + address stakedToken; + + bytes32 vaultCodehash; + + mapping (address => Account) account; + + + modifier onlyVault { + require(msg.sender.codehash() == vaultCodehash, "Unauthorized Codehash"); + } + + function join(uint256 amount) external onlyVault { + stakedToken.transferFrom(msg.sender, ) + } + + function lock(uint256 amount, uint256 time) external onlyVault { + + } + + function joinAndLock(uint256 amount, uint256 time) external onlyVault { + + } + + function leave(uint256 amount) external { + + } + + + + +} \ No newline at end of file diff --git a/contracts/StakeVault.sol b/contracts/StakeVault.sol new file mode 100644 index 0000000..9ee98b6 --- /dev/null +++ b/contracts/StakeVault.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.6.12; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract StakeVault { + address owner; + address stakeManager; + + ERC20 stakedToken; + uint256 balance; + uint256 locked; + uint256 multiplier; + + + function join(uint256 amount) external { + stakedToken.transferFrom(msg.sender, address(this), amount); + } + + function lock(uint256 amount, uint256 time) external { + + } + + function joinAndLock(uint256 amount, uint256 time) external { + + } + + function leave(uint256 amount) external { + + } + + + + +} \ No newline at end of file