@@ -16,11 +16,6 @@ import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
1616abstract contract TrueCurrencyWithPoR is TrueCurrency , IPoRToken {
1717 using SafeMath for uint256 ;
1818
19- constructor () public {
20- uint256 INITIAL_CHAIN_RESERVE_HEARTBEAT = 7 days ;
21- chainReserveHeartbeat = INITIAL_CHAIN_RESERVE_HEARTBEAT;
22- }
23-
2419 /**
2520 * @notice Overriden mint function that checks the specified proof-of-reserves feed to
2621 * ensure that the total supply of this TrueCurrency is not greater than the reported
@@ -30,7 +25,7 @@ abstract contract TrueCurrencyWithPoR is TrueCurrency, IPoRToken {
3025 * @param amount The amount of tokens to mint
3126 */
3227 function _mint (address account , uint256 amount ) internal virtual override {
33- if (chainReserveFeed == address (0 )) {
28+ if (chainReserveFeed == address (0 ) || ! proofOfReserveEnabled ) {
3429 super ._mint (account, amount);
3530 return ;
3631 }
@@ -61,18 +56,40 @@ abstract contract TrueCurrencyWithPoR is TrueCurrency, IPoRToken {
6156 * @dev Admin function to set a new feed
6257 * @param newFeed Address of the new feed
6358 */
64- function setChainReserveFeed (address newFeed ) external override onlyOwner returns ( uint256 ) {
59+ function setChainReserveFeed (address newFeed ) external override onlyOwner {
6560 emit NewChainReserveFeed (chainReserveFeed, newFeed);
6661 chainReserveFeed = newFeed;
62+ if (newFeed == address (0 ) && proofOfReserveEnabled) {
63+ proofOfReserveEnabled = false ;
64+ }
6765 }
6866
6967 /**
7068 * @notice Sets the feed's heartbeat expectation
7169 * @dev Admin function to set the heartbeat
7270 * @param newHeartbeat Value of the age of the latest update from the feed
7371 */
74- function setChainReserveHeartbeat (uint256 newHeartbeat ) external override onlyOwner returns ( uint256 ) {
72+ function setChainReserveHeartbeat (uint256 newHeartbeat ) external override onlyOwner {
7573 emit NewChainReserveHeartbeat (chainReserveHeartbeat, newHeartbeat);
7674 chainReserveHeartbeat = newHeartbeat;
7775 }
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+ }
7895}
0 commit comments