[<img width="200" alt="get in touch with Consensys Diligence" src="https://user-images.githubusercontent.com/2865694/56826101-91dcf380-685b-11e9-937c-af49c2510aa0.png">](https://diligence.consensys.net)<br/>
<sup>
[[ ๐ ](https://diligence.consensys.net) [ ๐ฉ ](mailto:diligence@consensys.net) [ ๐ฅ ](https://consensys.github.io/diligence/)]
</sup><br/><br/>
# Solidity Metrics for 'ib-v2'
## Table of contents
- [Scope](#t-scope)
- [Source Units in Scope](#t-source-Units-in-Scope)
- [Out of Scope](#t-out-of-scope)
- [Excluded Source Units](#t-out-of-scope-excluded-source-units)
- [Duplicate Source Units](#t-out-of-scope-duplicate-source-units)
- [Doppelganger Contracts](#t-out-of-scope-doppelganger-contracts)
- [Report Overview](#t-report)
- [Risk Summary](#t-risk)
- [Source Lines](#t-source-lines)
- [Inline Documentation](#t-inline-documentation)
- [Components](#t-components)
- [Exposed Functions](#t-exposed-functions)
- [StateVariables](#t-statevariables)
- [Capabilities](#t-capabilities)
- [Dependencies](#t-package-imports)
- [Totals](#t-totals)
## <span id=t-scope>Scope</span>
### <span id=t-source-Units-in-Scope>Source Units in Scope</span>
Source Units in Scope: **`27`** (**100%**)
| Type | File | Logic Contracts | Interfaces | Lines | nLines | nSLOC | Comment Lines | Complex. Score | Capabilities |
| ---- | ------ | --------------- | ---------- | ----- | ------ | ----- | ------------- | -------------- | ------------ |
| ๐ | src/protocol/oracle/PriceOracle.sol | 1 | **** | 91 | 91 | 53 | 23 | 38 | **<abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
| ๐จ | src/protocol/pool/Constants.sol | 1 | **** | 19 | 19 | 14 | 6 | 12 | **** |
| ๐ | src/protocol/pool/CreditLimitManager.sol | 1 | **** | 69 | 69 | 47 | 4 | 51 | **** |
| ๐ | src/protocol/pool/IronBank.sol | 1 | **** | 743 | 716 | 497 | 62 | 356 | **** |
| ๐ | src/protocol/pool/IronBankProxy.sol | 1 | **** | 9 | 9 | 5 | 1 | 4 | **** |
| ๐ | src/protocol/pool/IronBankStorage.sol | 1 | **** | 116 | 116 | 86 | 4 | 15 | **** |
| ๐ | src/protocol/pool/MarketConfigurator.sol | 1 | **** | 478 | 455 | 262 | 120 | 198 | **<abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
| ๐ | src/protocol/pool/interest-rate-model/TripleSlopeRateModel.sol | 1 | **** | 59 | 59 | 48 | 4 | 21 | **** |
| ๐ | src/protocol/token/DebtToken.sol | 1 | **** | 129 | 126 | 87 | 16 | 80 | **<abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
| ๐ | src/protocol/token/DebtTokenStorage.sol | 1 | **** | 15 | 15 | 8 | 1 | 4 | **** |
| ๐ | src/protocol/token/IBToken.sol | 1 | **** | 84 | 81 | 49 | 14 | 53 | **<abbr title='Initiates ETH Value Transfer'>๐ค</abbr>** |
| ๐ | src/protocol/token/IBTokenStorage.sol | 1 | **** | 9 | 9 | 5 | 1 | 3 | **** |
| ๐ | src/protocol/token/PToken.sol | 1 | **** | 82 | 82 | 36 | 29 | 43 | **** |
| ๐ | src/libraries/Arrays.sol | 1 | **** | 22 | 22 | 18 | 1 | 9 | **<abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
| ๐ | src/interfaces/DeferLiquidityCheckInterface.sol | **** | 1 | 7 | 6 | 3 | 1 | 3 | **** |
| ๐ | src/interfaces/IBTokenInterface.sol | **** | 1 | 15 | 8 | 4 | 1 | 11 | **** |
| ๐ | src/interfaces/InterestRateModelInterface.sol | **** | 1 | 11 | 6 | 3 | 1 | 7 | **** |
| ๐ | src/interfaces/IronBankInterface.sol | **** | 1 | 55 | 10 | 4 | 5 | 41 | **** |
| ๐ | src/interfaces/PriceOracleInterface.sol | **** | 1 | 7 | 6 | 3 | 1 | 3 | **<abbr title='doppelganger(PriceOracleInterface)'>๐</abbr>** |
| ๐ | src/interfaces/PTokenInterface.sol | **** | 1 | 15 | 8 | 4 | 1 | 11 | **** |
| ๐ | src/flashloan/Flashloan.sol | 1 | **** | 85 | 79 | 56 | 1 | 63 | **<abbr title='Uses Hash-Functions'>๐งฎ</abbr>** |
| ๐ | src/flashloan/interfaces/IERC3156FlashBorrower.sol | **** | 1 | 18 | 15 | 3 | 10 | 3 | **<abbr title='doppelganger(IERC3156FlashBorrower)'>๐</abbr>** |
| ๐ | src/flashloan/interfaces/IERC3156FlashLender.sol | **** | 1 | 33 | 13 | 4 | 19 | 7 | **<abbr title='doppelganger(IERC3156FlashLender)'>๐</abbr>** |
| ๐ | src/extensions/IronBankExtension.sol | 1 | **** | 843 | 803 | 508 | 187 | 395 | **<abbr title='Payable Functions'>๐ฐ</abbr><abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
| ๐ | src/extensions/libraries/UniswapV2Utils.sol | 1 | **** | 132 | 112 | 64 | 39 | 55 | **<abbr title='Uses Hash-Functions'>๐งฎ</abbr><abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
| ๐ | src/extensions/libraries/UniswapV3Utils.sol | 1 | **** | 47 | 47 | 30 | 12 | 12 | **<abbr title='Uses Hash-Functions'>๐งฎ</abbr>** |
| ๐ | src/extensions/interfaces/WethInterface.sol | **** | 1 | 11 | 6 | 3 | 1 | 10 | **<abbr title='Payable Functions'>๐ฐ</abbr>** |
| ๐๐๐๐จ | **Totals** | **18** | **9** | **3204** | **2988** | **1904** | **565** | **1508** | **<abbr title='Payable Functions'>๐ฐ</abbr><abbr title='Initiates ETH Value Transfer'>๐ค</abbr><abbr title='Uses Hash-Functions'>๐งฎ</abbr><abbr title='doppelganger'>๐</abbr><abbr title='Unchecked Blocks'>ฮฃ</abbr>** |
<sub>
Legend: <a onclick="toggleVisibility('table-legend', this)">[โ]</a>
<div id="table-legend" style="display:none">
<ul>
<li> <b>Lines</b>: total lines of the source unit </li>
<li> <b>nLines</b>: normalized lines of the source unit (e.g. normalizes functions spanning multiple lines) </li>
<li> <b>nSLOC</b>: normalized source lines of code (only source-code lines; no comments, no blank lines) </li>
<li> <b>Comment Lines</b>: lines containing single or block comments </li>
<li> <b>Complexity Score</b>: a custom complexity score derived from code statements that are known to introduce code complexity (branches, loops, calls, external interfaces, ...) </li>
</ul>
</div>
</sub>
#### <span id=t-out-of-scope>Out of Scope</span>
##### <span id=t-out-of-scope-excluded-source-units>Excluded Source Units</span>
Source Units Excluded: **`0`**
<a onclick="toggleVisibility('excluded-files', this)">[โ]</a>
<div id="excluded-files" style="display:none">
| File |
| ------ |
| None |
</div>
##### <span id=t-out-of-scope-duplicate-source-units>Duplicate Source Units</span>
Duplicate Source Units Excluded: **`0`**
<a onclick="toggleVisibility('duplicate-files', this)">[โ]</a>
<div id="duplicate-files" style="display:none">
| File |
| ------ |
| None |
</div>
##### <span id=t-out-of-scope-doppelganger-contracts>Doppelganger Contracts</span>
Doppelganger Contracts: **`3`**
<a onclick="toggleVisibility('doppelganger-contracts', this)">[โ]</a>
<div id="doppelganger-contracts" style="display:none">
| File | Contract | Doppelganger |
| ------ | -------- | ------------ |
| src/interfaces/PriceOracleInterface.sol | PriceOracleInterface | (fuzzy) [0](https://github.com/smartcontractkit/chainlink/blob/explorer-v0.8.5/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [1](https://github.com/smartcontractkit/chainlink/blob/upgrade/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [2](https://github.com/smartcontractkit/chainlink/blob/v.0.8.12/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [3](https://github.com/smartcontractkit/chainlink/blob/v0.8.12/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [4](https://github.com/smartcontractkit/chainlink/blob/v0.8.13/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [5](https://github.com/smartcontractkit/chainlink/blob/v0.8.14/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [6](https://github.com/smartcontractkit/chainlink/blob/v0.8.15/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [7](https://github.com/smartcontractkit/chainlink/blob/v0.8.16/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [8](https://github.com/smartcontractkit/chainlink/blob/v0.8.17/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [9](https://github.com/smartcontractkit/chainlink/blob/v0.8.18/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [10](https://github.com/smartcontractkit/chainlink/blob/v0.9.0/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [11](https://github.com/smartcontractkit/chainlink/blob/v0.9.2/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [12](https://github.com/smartcontractkit/chainlink/blob/v0.9.3/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [13](https://github.com/smartcontractkit/chainlink/blob/v0.9.4/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [14](https://github.com/smartcontractkit/chainlink/blob/v0.9.5/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [15](https://github.com/smartcontractkit/chainlink/blob/v0.9.6/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [16](https://github.com/smartcontractkit/chainlink/blob/v0.9.7/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [17](https://github.com/smartcontractkit/chainlink/blob/v0.9.8/evm-contracts/src/v0.6/interfaces/BlockHashStoreInterface.sol), [18](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.0.0/contracts/introspection/IERC165.sol), [19](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.0.1/contracts/introspection/IERC165.sol), [20](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.0.2/contracts/introspection/IERC165.sol), [21](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.1.2/contracts/introspection/IERC165.sol), [22](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.1.3/contracts/introspection/IERC165.sol), [23](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.2.1/contracts/introspection/IERC165.sol), [24](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.2.2/contracts/introspection/IERC165.sol), [25](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.2.3/contracts/introspection/IERC165.sol), [26](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v2.5.0/contracts/introspection/IERC165.sol), [27](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v3.2.0/contracts/introspection/IERC165Upgradeable.sol), [28](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v3.2.2-solc-0.7/contracts/introspection/IERC165Upgradeable.sol), [29](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v3.3.0/contracts/introspection/IERC165Upgradeable.sol), [30](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v3.3.0-solc-0.7/contracts/introspection/IERC165Upgradeable.sol), [31](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v3.4.0/contracts/introspection/IERC165Upgradeable.sol), [32](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v3.4.0-solc-0.7/contracts/introspection/IERC165Upgradeable.sol), [33](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.0.0/contracts/utils/introspection/IERC165Upgradeable.sol), [34](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.0.0-beta.0/contracts/utils/introspection/IERC165Upgradeable.sol), [35](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.0.0-rc.0/contracts/utils/introspection/IERC165Upgradeable.sol), [36](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.1.0/contracts/utils/introspection/IERC165Upgradeable.sol), [37](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.1.0-rc.0/contracts/utils/introspection/IERC165Upgradeable.sol), [38](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.2.0/contracts/utils/introspection/IERC165Upgradeable.sol), [39](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.0.0/contracts/introspection/IERC165.sol), [40](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.0.0-rc.1/contracts/introspection/IERC165.sol), [41](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.0.0-rc.2/contracts/introspection/IERC165.sol), [42](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.0.0-rc.3/contracts/introspection/IERC165.sol), [43](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.0.0-rc.4/contracts/introspection/IERC165.sol), [44](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.0.1/contracts/introspection/IERC165.sol), [45](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.0-rc.1/contracts/introspection/IERC165.sol), [46](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.0-rc.2/contracts/introspection/IERC165.sol), [47](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.1/contracts/introspection/IERC165.sol), [48](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.2/contracts/introspection/IERC165.sol), [49](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.3/contracts/introspection/IERC165.sol), [50](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.2.0/contracts/introspection/IERC165.sol), [51](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.2.0-rc.1/contracts/introspection/IERC165.sol), [52](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0/contracts/introspection/IERC165.sol), [53](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0-rc.0/contracts/introspection/IERC165.sol), [54](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0-rc.1/contracts/introspection/IERC165.sol), [55](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0-rc.2/contracts/introspection/IERC165.sol), [56](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0-rc.3/contracts/introspection/IERC165.sol), [57](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.4.0/contracts/introspection/IERC165.sol), [58](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.4.0-beta.0/contracts/introspection/IERC165.sol), [59](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.4.0-beta.1/contracts/introspection/IERC165.sol), [60](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.4.0-beta.2/contracts/introspection/IERC165.sol), [61](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/introspection/IERC165.sol), [62](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0-rc.0/contracts/introspection/IERC165.sol), [63](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.1/contracts/introspection/IERC165.sol), [64](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.0/contracts/introspection/IERC165.sol), [65](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.0-beta.0/contracts/introspection/IERC165.sol), [66](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.0-rc.0/contracts/introspection/IERC165.sol), [67](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.0-rc.1/contracts/introspection/IERC165.sol), [68](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.1/contracts/introspection/IERC165.sol), [69](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.2/contracts/introspection/IERC165.sol), [70](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.1.0/contracts/introspection/IERC165.sol), [71](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.1.0-rc.0/contracts/introspection/IERC165.sol), [72](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/introspection/IERC165.sol), [73](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0-rc.0/contracts/introspection/IERC165.sol), [74](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.1-solc-0.7/contracts/introspection/IERC165.sol), [75](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.2-solc-0.7/contracts/introspection/IERC165.sol) |
| src/flashloan/interfaces/IERC3156FlashBorrower.sol | IERC3156FlashBorrower | (fuzzy) [0](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.1.0/contracts/interfaces/IERC3156Upgradeable.sol), [1](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.1.0-rc.0/contracts/interfaces/IERC3156Upgradeable.sol), [2](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.2.0/contracts/interfaces/IERC3156Upgradeable.sol) |
| src/flashloan/interfaces/IERC3156FlashLender.sol | IERC3156FlashLender | (fuzzy) [0](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.1.0/contracts/interfaces/IERC3156Upgradeable.sol), [1](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.1.0-rc.0/contracts/interfaces/IERC3156Upgradeable.sol), [2](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v4.2.0/contracts/interfaces/IERC3156Upgradeable.sol) |
</div>
## <span id=t-report>Report</span>
### Overview
The analysis finished with **`0`** errors and **`0`** duplicate files.
#### <span id=t-risk>Risk</span>
<div class="wrapper" style="max-width: 512px; margin: auto">
<canvas id="chart-risk-summary"></canvas>
</div>
#### <span id=t-source-lines>Source Lines (sloc vs. nsloc)</span>
<div class="wrapper" style="max-width: 512px; margin: auto">
<canvas id="chart-nsloc-total"></canvas>
</div>
#### <span id=t-inline-documentation>Inline Documentation</span>
- **Comment-to-Source Ratio:** On average there are`3.66` code lines per comment (lower=better).
- **ToDo's:** `1`
#### <span id=t-components>Components</span>
| ๐Contracts | ๐Libraries | ๐Interfaces | ๐จAbstract |
| ------------- | ----------- | ------------ | ---------- |
| 14 | 3 | 9 | 1 |
#### <span id=t-exposed-functions>Exposed Functions</span>
This section lists functions that are explicitly declared public or payable. Please note that getter methods for public stateVars are not included.
| ๐Public | ๐ฐPayable |
| ---------- | --------- |
| 149 | 3 |
| External | Internal | Private | Pure | View |
| ---------- | -------- | ------- | ---- | ---- |
| 100 | 173 | 6 | 7 | 68 |
#### <span id=t-statevariables>StateVariables</span>
| Total | ๐Public |
| ---------- | --------- |
| 72 | 46 |
#### <span id=t-capabilities>Capabilities</span>
| Solidity Versions observed | ๐งช Experimental Features | ๐ฐ Can Receive Funds | ๐ฅ Uses Assembly | ๐ฃ Has Destroyable Contracts |
| -------------------------- | ------------------------ | -------------------- | ---------------- | ---------------------------- |
| `^0.8.0` | | `yes` | **** | **** |
| ๐ค Transfers ETH | โก Low-Level Calls | ๐ฅ DelegateCall | ๐งฎ Uses Hash Functions | ๐ ECRecover | ๐ New/Create/Create2 |
| ---------------- | ----------------- | --------------- | ---------------------- | ------------ | --------------------- |
| `yes` | **** | **** | `yes` | **** | **** |
| โป๏ธ TryCatch | ฮฃ Unchecked |
| ---------- | ----------- |
| **** | `yes` |
#### <span id=t-package-imports>Dependencies / External Imports</span>
| Dependency / Import Path | Count |
| ------------------------ | ------ |
| chainlink/contracts/src/v0.8/Denominations.sol | 1 |
| chainlink/contracts/src/v0.8/interfaces/FeedRegistryInterface.sol | 1 |
| openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol | 1 |
| openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol | 2 |
| openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol | 3 |
| openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol | 3 |
| openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol | 2 |
| openzeppelin-contracts/contracts/access/Ownable.sol | 1 |
| openzeppelin-contracts/contracts/access/Ownable2Step.sol | 4 |
| openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol | 1 |
| openzeppelin-contracts/contracts/security/ReentrancyGuard.sol | 2 |
| openzeppelin-contracts/contracts/token/ERC20/ERC20.sol | 1 |
| openzeppelin-contracts/contracts/token/ERC20/IERC20.sol | 5 |
| openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol | 2 |
| openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol | 4 |
| v2-core/interfaces/IUniswapV2Callee.sol | 1 |
| v2-core/interfaces/IUniswapV2Pair.sol | 2 |
| v3-core/interfaces/IUniswapV3Pool.sol | 1 |
| v3-core/interfaces/callback/IUniswapV3SwapCallback.sol | 1 |
| v3-core/libraries/SafeCast.sol | 1 |
| v3-core/libraries/TickMath.sol | 1 |
| v3-periphery/libraries/Path.sol | 1 |
#### <span id=t-totals>Totals</span>
##### Summary
<div class="wrapper" style="max-width: 90%; margin: auto">
<canvas id="chart-num-bar"></canvas>
</div>
##### AST Node Statistics
###### Function Calls
<div class="wrapper" style="max-width: 90%; margin: auto">
<canvas id="chart-num-bar-ast-funccalls"></canvas>
</div>
###### Assembly Calls
<div class="wrapper" style="max-width: 90%; margin: auto">
<canvas id="chart-num-bar-ast-asmcalls"></canvas>
</div>
###### AST Total
<div class="wrapper" style="max-width: 90%; margin: auto">
<canvas id="chart-num-bar-ast"></canvas>
</div>
##### Inheritance Graph
<a onclick="toggleVisibility('surya-inherit', this)">[โ]</a>
<div id="surya-inherit" style="display:none">
<div class="wrapper" style="max-width: 512px; margin: auto">
<div id="surya-inheritance" style="text-align: center;"></div>
</div>
</div>
##### CallGraph
<a onclick="toggleVisibility('surya-call', this)">[โ]</a>
<div id="surya-call" style="display:none">
<div class="wrapper" style="max-width: 512px; margin: auto">
<div id="surya-callgraph" style="text-align: center;"></div>
</div>
</div>
###### Contract Summary
<a onclick="toggleVisibility('surya-mdreport', this)">[โ]</a>
<div id="surya-mdreport" style="display:none">
Sลซrya's Description Report
Files Description Table
| File Name | SHA-1 Hash |
|-------------|--------------|
| src/protocol/oracle/PriceOracle.sol | 6ebfe985f46903b94aa1f62d1635d8ed32ca8065 |
| src/protocol/pool/Constants.sol | 295f9b77baf17883d0663f02e6210811e2685516 |
| src/protocol/pool/CreditLimitManager.sol | 460c82a8fcc54afb5fc2095cc30d44c7c754c4b7 |
| src/protocol/pool/IronBank.sol | 1774b59c0d72d95188a7bf72a2cb5f59af123f96 |
| src/protocol/pool/IronBankProxy.sol | 82fc9fd5e12d0e2611607d68a384afff88f6add4 |
| src/protocol/pool/IronBankStorage.sol | fbe58201cc67b45194d34c398ca5a738aa8a7dda |
| src/protocol/pool/MarketConfigurator.sol | 363f31cb01e2fac43767962a34c6cc43fb6ebe0c |
| src/protocol/pool/interest-rate-model/TripleSlopeRateModel.sol | 3b6a1a25bb28a74eea0770e9f947d105e1a1b994 |
| src/protocol/token/DebtToken.sol | a4045454100ad70762ed31acbe253429b8f9c5f8 |
| src/protocol/token/DebtTokenStorage.sol | f436916b81529e066539cee7d1e1d8702c2fe16a |
| src/protocol/token/IBToken.sol | 3406c9ef82f20e8a295a0d69d92bdf9eb9e86375 |
| src/protocol/token/IBTokenStorage.sol | dae2a5081856b2c11be217f79d70d25d914a6a26 |
| src/protocol/token/PToken.sol | ef8af026990c28658ef07742312a54c66e070c36 |
| src/libraries/Arrays.sol | 82f1e691ea7715722778c17d5ba57f9cb7ac4541 |
| src/interfaces/DeferLiquidityCheckInterface.sol | 89d425ef94979929b6a4251c3caf861466a70509 |
| src/interfaces/IBTokenInterface.sol | 53c2422522087c76b6bac66629d4eaa2d82f5bce |
| src/interfaces/InterestRateModelInterface.sol | e5238a43d3281c33cbb79f28a7c251a092abe656 |
| src/interfaces/IronBankInterface.sol | 965d57be9489447033832c521b9d5ec5610194cd |
| src/interfaces/PriceOracleInterface.sol | b711d9a6ffefeb6b0af0242533fd891362ce2571 |
| src/interfaces/PTokenInterface.sol | 5ceb8841983e644ef9ddb2c9478427fc87d5773b |
| src/flashloan/Flashloan.sol | ef0761a9fe07632dccdf872742e7ead12b091624 |
| src/flashloan/interfaces/IERC3156FlashBorrower.sol | dee4d46166b10645286e9d37ca242ee340b343b8 |
| src/flashloan/interfaces/IERC3156FlashLender.sol | 398cdb2eb5ccf1a24ad2163b0a4e46417f3ad2e3 |
| src/extensions/IronBankExtension.sol | 7ec947c02e5c9fffa2f09a6b068bd8b6345d25c7 |
| src/extensions/libraries/UniswapV2Utils.sol | ce48a71f82c19f99ac4ae6ae76d9a512be7b41d8 |
| src/extensions/libraries/UniswapV3Utils.sol | abb1477a60c4de69105db15cea278e92888e9878 |
| src/extensions/interfaces/WethInterface.sol | b49ea81eab3b319bdaf4f41b9995e835e4d104cf |
Contracts Description Table
| Contract | Type | Bases | | |
|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
| โ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
| **PriceOracle** | Implementation | Ownable2Step, PriceOracleInterface |||
| โ | <Constructor> | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | getPrice | External โ๏ธ | |NOโ๏ธ |
| โ | getPriceFromChainlink | Internal ๐ | | |
| โ | _setAggregators | External โ๏ธ | ๐ | onlyOwner |
||||||
| **Constants** | Implementation | |||
||||||
| **CreditLimitManager** | Implementation | Ownable2Step |||
| โ | <Constructor> | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | getPool | External โ๏ธ | |NOโ๏ธ |
| โ | getGuardian | External โ๏ธ | |NOโ๏ธ |
| โ | getUserCreditLimits | Public โ๏ธ | |NOโ๏ธ |
| โ | setGuardian | External โ๏ธ | ๐ | onlyOwner |
| โ | setCreditLimit | External โ๏ธ | ๐ | onlyOwner |
| โ | pauseCreditLimit | External โ๏ธ | ๐ | onlyOwnerOrGuardian |
||||||
| **IronBank** | Implementation | Initializable, UUPSUpgradeable, Ownable2StepUpgradeable, ReentrancyGuard, IronBankStorage, IronBankInterface |||
| โ | initialize | Public โ๏ธ | ๐ | initializer |
| โ | getAllMarkets | Public โ๏ธ | |NOโ๏ธ |
| โ | getExchangeRate | Public โ๏ธ | |NOโ๏ธ |
| โ | getMarketStatus | Public โ๏ธ | |NOโ๏ธ |
| โ | isMarketListed | Public โ๏ธ | |NOโ๏ธ |
| โ | getMaxBorrowAmount | Public โ๏ธ | |NOโ๏ธ |
| โ | getBorrowBalance | Public โ๏ธ | |NOโ๏ธ |
| โ | getSupplyBalance | Public โ๏ธ | |NOโ๏ธ |
| โ | getAccountLiquidity | Public โ๏ธ | |NOโ๏ธ |
| โ | getUserEnteredMarkets | Public โ๏ธ | |NOโ๏ธ |
| โ | isEnteredMarket | Public โ๏ธ | |NOโ๏ธ |
| โ | getUserAllowedExtensions | Public โ๏ธ | |NOโ๏ธ |
| โ | isAllowedExtension | Public โ๏ธ | |NOโ๏ธ |
| โ | getCreditLimit | Public โ๏ธ | |NOโ๏ธ |
| โ | getUserCreditMarkets | Public โ๏ธ | |NOโ๏ธ |
| โ | isCreditAccount | Public โ๏ธ | |NOโ๏ธ |
| โ | getMarketConfiguration | Public โ๏ธ | |NOโ๏ธ |
| โ | getIBTokenAddress | Public โ๏ธ | |NOโ๏ธ |
| โ | getDebtTokenAddress | Public โ๏ธ | |NOโ๏ธ |
| โ | getPTokenAddress | Public โ๏ธ | |NOโ๏ธ |
| โ | calculateLiquidationOpportunity | Public โ๏ธ | |NOโ๏ธ |
| โ | accrueInterest | External โ๏ธ | ๐ | nonReentrant |
| โ | checkAccountLiquidity | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | supply | External โ๏ธ | ๐ | nonReentrant isAuthorized |
| โ | borrow | External โ๏ธ | ๐ | nonReentrant isAuthorized |
| โ | redeem | External โ๏ธ | ๐ | nonReentrant isAuthorized |
| โ | repay | External โ๏ธ | ๐ | nonReentrant isAuthorized |
| โ | liquidate | External โ๏ธ | ๐ | nonReentrant |
| โ | deferLiquidityCheck | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | addToReserves | External โ๏ธ | ๐ | nonReentrant |
| โ | setUserExtension | External โ๏ธ | ๐ | nonReentrant |
| โ | transferDebt | External โ๏ธ | ๐ | nonReentrant |
| โ | transferIBToken | External โ๏ธ | ๐ | nonReentrant |
| โ | listMarket | External โ๏ธ | ๐ | onlyMarketConfigurator |
| โ | delistMarket | External โ๏ธ | ๐ | onlyMarketConfigurator |
| โ | setMarketConfiguration | External โ๏ธ | ๐ | onlyMarketConfigurator |
| โ | setCreditLimit | External โ๏ธ | ๐ | onlyCreditLimitManager |
| โ | setPriceOracle | External โ๏ธ | ๐ | onlyOwner |
| โ | setMarketConfigurator | External โ๏ธ | ๐ | onlyOwner |
| โ | setCreditLimitManager | External โ๏ธ | ๐ | onlyOwner |
| โ | seize | External โ๏ธ | ๐ | onlyOwner |
| โ | reduceReserves | External โ๏ธ | ๐ | onlyOwner |
| โ | _authorizeUpgrade | Internal ๐ | ๐ | onlyOwner |
| โ | _getNow | Internal ๐ | | |
| โ | _checkAuthorized | Internal ๐ | | |
| โ | _checkMarketConfigurator | Internal ๐ | | |
| โ | _getExchangeRate | Internal ๐ | | |
| โ | _getLiquidationAmount | Internal ๐ | | |
| โ | _getBorrowBalance | Internal ๐ | | |
| โ | _transferDebt | Internal ๐ | ๐ | |
| โ | _transferIBToken | Internal ๐ | ๐ | |
| โ | _accrueInterest | Internal ๐ | ๐ | |
| โ | _enterMarket | Internal ๐ | ๐ | |
| โ | _exitMarket | Internal ๐ | ๐ | |
| โ | _checkAccountLiquidity | Internal ๐ | ๐ | |
| โ | _getAccountLiquidity | Internal ๐ | | |
||||||
| **IronBankProxy** | Implementation | ERC1967Proxy |||
| โ | <Constructor> | Public โ๏ธ | ๐ | ERC1967Proxy |
||||||
| **IronBankStorage** | Implementation | Constants |||
||||||
| **MarketConfigurator** | Implementation | Ownable2Step, Constants |||
| โ | <Constructor> | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | getMarketConfiguration | Public โ๏ธ | |NOโ๏ธ |
| โ | setGuardian | External โ๏ธ | ๐ | onlyOwner |
| โ | listMarket | External โ๏ธ | ๐ | onlyOwner |
| โ | listPTokenMarket | External โ๏ธ | ๐ | onlyOwner |
| โ | configureMarketAsCollateral | External โ๏ธ | ๐ | onlyOwner |
| โ | adjustMarketCollateralFactor | External โ๏ธ | ๐ | onlyOwner |
| โ | adjustMarketReserveFactor | External โ๏ธ | ๐ | onlyOwner |
| โ | adjustMarketLiquidationThreshold | External โ๏ธ | ๐ | onlyOwner |
| โ | adjustMarketLiquidationBonus | External โ๏ธ | ๐ | onlyOwner |
| โ | changeMarketInterestRateModel | External โ๏ธ | ๐ | onlyOwner |
| โ | freezeMarket | External โ๏ธ | ๐ | onlyOwner |
| โ | softDelistMarket | External โ๏ธ | ๐ | onlyOwner |
| โ | hardDelistMarket | External โ๏ธ | ๐ | onlyOwner |
| โ | setMarketSupplyCaps | External โ๏ธ | ๐ | onlyOwnerOrGuardian |
| โ | setMarketBorrowCaps | External โ๏ธ | ๐ | onlyOwnerOrGuardian |
| โ | setMarketSupplyPaused | External โ๏ธ | ๐ | onlyOwnerOrGuardian |
| โ | setMarketBorrowPaused | External โ๏ธ | ๐ | onlyOwnerOrGuardian |
| โ | setMarketPToken | External โ๏ธ | ๐ | onlyOwnerOrGuardian |
| โ | _checkOwnerOrGuardian | Internal ๐ | | |
| โ | _listMarket | Internal ๐ | ๐ | |
||||||
| **TripleSlopeRateModel** | Implementation | InterestRateModelInterface |||
| โ | <Constructor> | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | getUtilization | Public โ๏ธ | |NOโ๏ธ |
| โ | getBorrowRate | Public โ๏ธ | |NOโ๏ธ |
| โ | getSupplyRate | Public โ๏ธ | |NOโ๏ธ |
||||||
| **DebtToken** | Implementation | Initializable, ERC20Upgradeable, UUPSUpgradeable, OwnableUpgradeable, DebtTokenStorage |||
| โ | initialize | Public โ๏ธ | ๐ | initializer |
| โ | getPool | Public โ๏ธ | |NOโ๏ธ |
| โ | getUnderlying | Public โ๏ธ | |NOโ๏ธ |
| โ | debtAllowance | Public โ๏ธ | |NOโ๏ธ |
| โ | balanceOf | Public โ๏ธ | |NOโ๏ธ |
| โ | approve | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | increaseAllowance | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | decreaseAllowance | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | approveDebt | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | increaseDebtAllowance | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | decreaseDebtAllowance | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | transfer | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | transferFrom | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | receiveDebt | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | _authorizeUpgrade | Internal ๐ | ๐ | onlyOwner |
| โ | _approveDebt | Internal ๐ | ๐ | |
| โ | _spendDebtAllowance | Internal ๐ | ๐ | |
||||||
| **DebtTokenStorage** | Implementation | |||
||||||
| **IBToken** | Implementation | Initializable, ERC20Upgradeable, UUPSUpgradeable, OwnableUpgradeable, IBTokenStorage |||
| โ | initialize | Public โ๏ธ | ๐ | initializer |
| โ | getPool | Public โ๏ธ | |NOโ๏ธ |
| โ | getUnderlying | Public โ๏ธ | |NOโ๏ธ |
| โ | transfer | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | transferFrom | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | mint | External โ๏ธ | ๐ | onlyPool |
| โ | burn | External โ๏ธ | ๐ | onlyPool |
| โ | seize | External โ๏ธ | ๐ | onlyPool |
| โ | _authorizeUpgrade | Internal ๐ | ๐ | onlyOwner |
| โ | _checkPool | Internal ๐ | | |
||||||
| **IBTokenStorage** | Implementation | |||
||||||
| **PToken** | Implementation | ERC20, Ownable, PTokenInterface |||
| โ | <Constructor> | Public โ๏ธ | ๐ | ERC20 |
| โ | decimals | Public โ๏ธ | |NOโ๏ธ |
| โ | getUnderlying | Public โ๏ธ | |NOโ๏ธ |
| โ | wrap | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | unwrap | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | absorb | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | seize | External โ๏ธ | ๐ | onlyOwner |
||||||
| **Arrays** | Library | |||
| โ | deleteElement | Internal ๐ | ๐ | |
||||||
| **DeferLiquidityCheckInterface** | Interface | |||
| โ | onDeferredLiquidityCheck | External โ๏ธ | ๐ |NOโ๏ธ |
||||||
| **IBTokenInterface** | Interface | IERC20 |||
| โ | mint | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | burn | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | seize | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | getUnderlying | External โ๏ธ | |NOโ๏ธ |
||||||
| **InterestRateModelInterface** | Interface | |||
| โ | getUtilization | External โ๏ธ | |NOโ๏ธ |
| โ | getBorrowRate | External โ๏ธ | |NOโ๏ธ |
| โ | getSupplyRate | External โ๏ธ | |NOโ๏ธ |
||||||
| **IronBankInterface** | Interface | |||
| โ | accrueInterest | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | supply | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | borrow | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | redeem | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | repay | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | deferLiquidityCheck | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | getBorrowBalance | External โ๏ธ | |NOโ๏ธ |
| โ | getSupplyBalance | External โ๏ธ | |NOโ๏ธ |
| โ | isMarketListed | External โ๏ธ | |NOโ๏ธ |
| โ | getMaxBorrowAmount | External โ๏ธ | |NOโ๏ธ |
| โ | transferIBToken | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | transferDebt | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | getMarketConfiguration | External โ๏ธ | |NOโ๏ธ |
| โ | listMarket | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | delistMarket | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | setMarketConfiguration | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | getCreditLimit | External โ๏ธ | |NOโ๏ธ |
| โ | getUserCreditMarkets | External โ๏ธ | |NOโ๏ธ |
| โ | isCreditAccount | External โ๏ธ | |NOโ๏ธ |
| โ | setCreditLimit | External โ๏ธ | ๐ |NOโ๏ธ |
||||||
| **PriceOracleInterface** | Interface | |||
| โ | getPrice | External โ๏ธ | |NOโ๏ธ |
||||||
| **PTokenInterface** | Interface | IERC20 |||
| โ | getUnderlying | External โ๏ธ | |NOโ๏ธ |
| โ | wrap | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | unwrap | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | absorb | External โ๏ธ | ๐ |NOโ๏ธ |
||||||
| **Flashloan** | Implementation | IERC3156FlashLender, DeferLiquidityCheckInterface |||
| โ | <Constructor> | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | maxFlashLoan | External โ๏ธ | |NOโ๏ธ |
| โ | flashFee | External โ๏ธ | |NOโ๏ธ |
| โ | flashLoan | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | onDeferredLiquidityCheck | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | _loan | Internal ๐ | ๐ | |
||||||
| **IERC3156FlashBorrower** | Interface | |||
| โ | onFlashLoan | External โ๏ธ | ๐ |NOโ๏ธ |
||||||
| **IERC3156FlashLender** | Interface | |||
| โ | maxFlashLoan | External โ๏ธ | |NOโ๏ธ |
| โ | flashFee | External โ๏ธ | |NOโ๏ธ |
| โ | flashLoan | External โ๏ธ | ๐ |NOโ๏ธ |
||||||
| **IronBankExtension** | Implementation | ReentrancyGuard, Ownable2Step, IUniswapV3SwapCallback, IUniswapV2Callee |||
| โ | <Constructor> | Public โ๏ธ | ๐ |NOโ๏ธ |
| โ | execute | External โ๏ธ | ๐ต |NOโ๏ธ |
| โ | uniswapV3SwapCallback | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | uniswapV2Call | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | seize | External โ๏ธ | ๐ | onlyOwner |
| โ | seizeNative | External โ๏ธ | ๐ | onlyOwner |
| โ | supplyNativeToken | Internal ๐ | ๐ | nonReentrant |
| โ | borrowNativeToken | Internal ๐ | ๐ | nonReentrant |
| โ | redeemNativeToken | Internal ๐ | ๐ | nonReentrant |
| โ | repayNativeToken | Internal ๐ | ๐ | nonReentrant |
| โ | supply | Internal ๐ | ๐ | nonReentrant |
| โ | borrow | Internal ๐ | ๐ | nonReentrant |
| โ | redeem | Internal ๐ | ๐ | nonReentrant |
| โ | repay | Internal ๐ | ๐ | nonReentrant |
| โ | uniV3SwapExactOut | Internal ๐ | ๐ | nonReentrant checkDeadline |
| โ | uniV3SwapExactIn | Internal ๐ | ๐ | nonReentrant checkDeadline |
| โ | uniV2SwapExactOut | Internal ๐ | ๐ | nonReentrant checkDeadline |
| โ | uniV2SwapExactIn | Internal ๐ | ๐ | nonReentrant checkDeadline |
| โ | uniV3ExactOutputInternal | Private ๐ | ๐ | |
| โ | uniV3ExactInputInternal | Private ๐ | ๐ | |
| โ | uniV2ExactOutputInternal | Private ๐ | ๐ | |
| โ | uniV2ExactInputInternal | Private ๐ | ๐ | |
| โ | getUniV3Pool | Private ๐ | | |
| โ | getUniV2Pool | Private ๐ | | |
| โ | <Receive Ether> | External โ๏ธ | ๐ต |NOโ๏ธ |
||||||
| **UniswapV2Utils** | Library | |||
| โ | computeAddress | Internal ๐ | | |
| โ | getReserves | Internal ๐ | | |
| โ | getAmountIn | Internal ๐ | | |
| โ | getAmountOut | Internal ๐ | | |
| โ | getAmountsIn | Internal ๐ | | |
| โ | getAmountsOut | Internal ๐ | | |
||||||
| **UniswapV3Utils** | Library | |||
| โ | getPoolKey | Internal ๐ | | |
| โ | computeAddress | Internal ๐ | | |
||||||
| **WethInterface** | Interface | |||
| โ | deposit | External โ๏ธ | ๐ต |NOโ๏ธ |
| โ | withdraw | External โ๏ธ | ๐ |NOโ๏ธ |
| โ | balanceOf | External โ๏ธ | |NOโ๏ธ |
Legend
| Symbol | Meaning |
|:--------:|-----------|
| ๐ | Function can modify state |
| ๐ต | Function is payable |
</div>
____
<sub>
Thinking about smart contract security? We can provide training, ongoing advice, and smart contract auditing. [Contact us](https://diligence.consensys.net/contact/).
</sub>