/
PeriFinanceToPolygon.sol
78 lines (63 loc) · 2.25 KB
/
PeriFinanceToPolygon.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
pragma solidity 0.5.16;
pragma experimental ABIEncoderV2;
import "./PeriFinance.sol";
contract PeriFinanceToPolygon is PeriFinance {
address public childChainManager;
constructor(
address payable _proxy,
TokenState _tokenState,
address _owner,
uint _totalSupply,
address _resolver,
address _childChainManager,
address _blacklistManager,
address payable _bridgeValidator
)
public
PeriFinance(
_proxy,
_tokenState,
_owner,
_totalSupply,
_resolver,
_childChainManager,
_blacklistManager,
_bridgeValidator
)
{
childChainManager = _childChainManager;
}
// function multiTransfer(address[] calldata _recipients, uint[] calldata _amounts)
// external
// optionalProxy
// systemActive
// blacklisted(messageSender)
// returns (bool)
// {
// return false;
// require(_recipients.length == _amounts.length, "length is not matched");
// bool transferResult = true;
// for (uint i = 0; i < _recipients.length; i++) {
// if (_recipients[i] == address(0) || _amounts[i] == 0) {
// continue;
// }
// _canTransfer(messageSender, _amounts[i]);
// require(_transferByProxy(messageSender, _recipients[i], _amounts[i]), "Transfer failed");
// }
// return transferResult;
// }
function setChildChainManager(address _childChainManager) external onlyOwner {
require(_childChainManager != address(0), "Address cannot be zero");
childChainManager = _childChainManager;
}
function deposit(address _user, bytes calldata depositData) external optionalProxy {
require(messageSender == childChainManager, "Caller can't deposit");
uint amount = abi.decode(depositData, (uint256));
tokenState.setBalanceOf(_user, tokenState.balanceOf(_user).add(amount));
emitTransfer(address(0), _user, amount);
}
function withdraw(uint _amount) external optionalProxy {
tokenState.setBalanceOf(messageSender, tokenState.balanceOf(messageSender).sub(_amount));
emitTransfer(messageSender, address(0), _amount);
}
}