@@ -16,11 +16,6 @@ import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
16
16
abstract contract TrueCurrencyWithPoR is TrueCurrency , IPoRToken {
17
17
using SafeMath for uint256 ;
18
18
19
- constructor () public {
20
- uint256 INITIAL_CHAIN_RESERVE_HEARTBEAT = 7 days ;
21
- chainReserveHeartbeat = INITIAL_CHAIN_RESERVE_HEARTBEAT;
22
- }
23
-
24
19
/**
25
20
* @notice Overriden mint function that checks the specified proof-of-reserves feed to
26
21
* ensure that the total supply of this TrueCurrency is not greater than the reported
@@ -30,7 +25,7 @@ abstract contract TrueCurrencyWithPoR is TrueCurrency, IPoRToken {
30
25
* @param amount The amount of tokens to mint
31
26
*/
32
27
function _mint (address account , uint256 amount ) internal virtual override {
33
- if (chainReserveFeed == address (0 )) {
28
+ if (chainReserveFeed == address (0 ) || ! proofOfReserveEnabled ) {
34
29
super ._mint (account, amount);
35
30
return ;
36
31
}
@@ -61,18 +56,40 @@ abstract contract TrueCurrencyWithPoR is TrueCurrency, IPoRToken {
61
56
* @dev Admin function to set a new feed
62
57
* @param newFeed Address of the new feed
63
58
*/
64
- function setChainReserveFeed (address newFeed ) external override onlyOwner returns ( uint256 ) {
59
+ function setChainReserveFeed (address newFeed ) external override onlyOwner {
65
60
emit NewChainReserveFeed (chainReserveFeed, newFeed);
66
61
chainReserveFeed = newFeed;
62
+ if (newFeed == address (0 ) && proofOfReserveEnabled) {
63
+ proofOfReserveEnabled = false ;
64
+ }
67
65
}
68
66
69
67
/**
70
68
* @notice Sets the feed's heartbeat expectation
71
69
* @dev Admin function to set the heartbeat
72
70
* @param newHeartbeat Value of the age of the latest update from the feed
73
71
*/
74
- function setChainReserveHeartbeat (uint256 newHeartbeat ) external override onlyOwner returns ( uint256 ) {
72
+ function setChainReserveHeartbeat (uint256 newHeartbeat ) external override onlyOwner {
75
73
emit NewChainReserveHeartbeat (chainReserveHeartbeat, newHeartbeat);
76
74
chainReserveHeartbeat = newHeartbeat;
77
75
}
76
+
77
+ /**
78
+ * @notice Disable Proof of Reserve check
79
+ * @dev Admin function to disable Proof of Reserve
80
+ */
81
+ function disableProofOfReserve () external override onlyOwner {
82
+ emit ProofOfReserveDisabled ();
83
+ proofOfReserveEnabled = false ;
84
+ }
85
+
86
+ /**
87
+ * @notice Enable Proof of Reserve check
88
+ * @dev Admin function to enable Proof of Reserve
89
+ */
90
+ function enableProofOfReserve () external override onlyOwner {
91
+ require (chainReserveFeed != address (0 ), "TrueCurrency: chainReserveFeed not set " );
92
+ emit ProofOfReserveEnabled ();
93
+ proofOfReserveEnabled = true ;
94
+ }
78
95
}
0 commit comments