[<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>