-
Notifications
You must be signed in to change notification settings - Fork 0
/
AnteUSDTSupplyTest.sol
44 lines (36 loc) · 2.59 KB
/
AnteUSDTSupplyTest.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
// SPDX-License-Identifier: GPL-3.0-only
// ┏━━━┓━━━━━┏┓━━━━━━━━━┏━━━┓━━━━━━━━━━━━━━━━━━━━━━━
// ┃┏━┓┃━━━━┏┛┗┓━━━━━━━━┃┏━━┛━━━━━━━━━━━━━━━━━━━━━━━
// ┃┗━┛┃┏━┓━┗┓┏┛┏━━┓━━━━┃┗━━┓┏┓┏━┓━┏━━┓━┏━┓━┏━━┓┏━━┓
// ┃┏━┓┃┃┏┓┓━┃┃━┃┏┓┃━━━━┃┏━━┛┣┫┃┏┓┓┗━┓┃━┃┏┓┓┃┏━┛┃┏┓┃
// ┃┃ ┃┃┃┃┃┃━┃┗┓┃┃━┫━┏┓━┃┃━━━┃┃┃┃┃┃┃┗┛┗┓┃┃┃┃┃┗━┓┃┃━┫
// ┗┛ ┗┛┗┛┗┛━┗━┛┗━━┛━┗┛━┗┛━━━┗┛┗┛┗┛┗━━━┛┗┛┗┛┗━━┛┗━━┛
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "../AnteTest.sol";
/// @title Ante Test to check USDT supply never exceeds M2 (as of May 2021)
/// @dev As of 2021-05-31, est. M2 monetary supply is ~$20.1086 Trillion USD
/// From https://www.federalreserve.gov/releases/h6/current/default.htm
/// We represent the threshold as 20.1 Trillion * (10 ** usdt Decimals)
/// Or, more simply, 20.1 Trillion = 20,100 Billion
contract AnteUSDTSupplyTest is AnteTest("ERC20 Tether (USDT) supply doesn't exceed M2, ~$20T") {
// https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code
address public immutable usdtAddr;
uint256 public immutable thresholdSupply;
ERC20 public usdtToken;
/// @param _usdtAddr USDT contract address (0xdac17f958d2ee523a2206206994597c13d831ec7 on mainnet)
constructor(address _usdtAddr) {
usdtAddr = _usdtAddr;
usdtToken = ERC20(_usdtAddr);
protocolName = "Tether";
testedContracts = [_usdtAddr];
thresholdSupply = 20100 * (1000 * 1000 * 1000) * (10 ** usdtToken.decimals());
}
/// @notice test to check if USDT token supply is greater than M2 money supply
/// @return true if USDT token supply is over M2
function checkTestPasses() public view override returns (bool) {
return (usdtToken.totalSupply() <= thresholdSupply);
}
}