-
Notifications
You must be signed in to change notification settings - Fork 0
/
BussinessMinter.sol
77 lines (63 loc) · 1.63 KB
/
BussinessMinter.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
// SPDX-License-Identifier: MIT
pragma solidity =0.7.5;
// VokenTB (TeraByte) Business Minter
//
// More info:
// https://voken.io
//
// Contact us:
// support@voken.io
import "LibSafeMath.sol";
import "LibIVokenTB.sol";
import "LibAuthProxy.sol";
/**
* @dev Business Minter
*/
contract BusinessMinter is AuthProxy {
using SafeMath for uint256;
uint256 private immutable VOKEN_ISSUE_MAX = 37_800_000e9; // 37.8 million, 18% of total supply
uint256 private _vokenIssued;
IVokenTB private immutable VOKEN_TB = IVokenTB(0x1234567a022acaa848E7D6bC351d075dBfa76Dd4);
receive()
external
payable
{
//
}
function status()
public
view
returns (
uint256 issued,
uint256 quota
)
{
issued = _vokenIssued;
quota = VOKEN_ISSUE_MAX.sub(_vokenIssued);
}
function mint(
address account,
uint256 amount
)
public
onlyProxy
returns (bool)
{
_vokenIssued = _vokenIssued.add(amount);
require(_vokenIssued <= VOKEN_ISSUE_MAX, "Quota exceeded");
return VOKEN_TB.mint(account, amount);
}
function mintWithVesting(
address account,
uint256 amount,
address vestingContract
)
public
onlyProxy
returns (bool)
{
_vokenIssued = _vokenIssued.add(amount);
require(_vokenIssued <= VOKEN_ISSUE_MAX, "Quota exceeded");
return VOKEN_TB.mintWithVesting(account, amount, vestingContract);
}
}