59 lines
1.7 KiB
Solidity
59 lines
1.7 KiB
Solidity
/*
|
|
|
|
Copyright 2020 DODO ZOO.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
pragma solidity 0.6.9;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
import {IERC20} from "../intf/IERC20.sol";
|
|
import {SafeMath} from "../lib/SafeMath.sol";
|
|
import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
|
|
import {IDODOApproveProxy} from "../SmartRoute/DODOApproveProxy.sol";
|
|
|
|
/**
|
|
* @title DODOMigration between Ethereum and BSC
|
|
* @author DODO Breeder
|
|
*/
|
|
contract DODOMigrationBSC is InitializableOwnable {
|
|
using SafeMath for uint256;
|
|
|
|
// ============ Storage ============
|
|
|
|
address immutable _ETH_DODO_TOKEN_;
|
|
address immutable _DODO_APPROVE_PROXY_;
|
|
mapping(address => uint256) internal balances;
|
|
|
|
constructor(address ethDodoToken, address dodoApproveProxy) public {
|
|
_ETH_DODO_TOKEN_ = ethDodoToken;
|
|
_DODO_APPROVE_PROXY_ = dodoApproveProxy;
|
|
}
|
|
|
|
// ============ Events ============
|
|
|
|
event Lock(address indexed sender, address indexed mintToBscAccount, uint256 amount);
|
|
event Unlock(address indexed to, uint256 amount);
|
|
|
|
// ============ Functions ============
|
|
|
|
function lock(uint256 amount, address mintToBscAccount) external {
|
|
IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(
|
|
_ETH_DODO_TOKEN_,
|
|
msg.sender,
|
|
address(this),
|
|
amount
|
|
);
|
|
balances[msg.sender] = balances[msg.sender].add(amount);
|
|
emit Lock(msg.sender, mintToBscAccount, amount);
|
|
}
|
|
|
|
function unlock(address unlockTo, uint256 amount) external onlyOwner {
|
|
require(balances[unlockTo] >= amount);
|
|
balances[unlockTo] = balances[unlockTo].sub(amount);
|
|
IERC20(_ETH_DODO_TOKEN_).transfer(unlockTo, amount);
|
|
emit Unlock(unlockTo, amount);
|
|
}
|
|
|
|
}
|