# VTokenInterfaces

## VTokenStorage

Storage layout used by the `VToken` contract

## Solidity API

```solidity
struct BorrowSnapshot {
  uint256 principal;
  uint256 interestIndex;
}
```

#### underlying

Underlying asset for this VToken

```solidity
address underlying
```

***

#### name

EIP-20 token name for this token

```solidity
string name
```

***

#### symbol

EIP-20 token symbol for this token

```solidity
string symbol
```

***

#### decimals

EIP-20 token decimals for this token

```solidity
uint8 decimals
```

***

#### protocolShareReserve

Protocol share Reserve contract address

```solidity
address payable protocolShareReserve
```

***

#### comptroller

Contract which oversees inter-vToken operations

```solidity
contract ComptrollerInterface comptroller
```

***

#### interestRateModel

Model which tells what the current interest rate should be

```solidity
contract InterestRateModel interestRateModel
```

***

#### reserveFactorMantissa

Fraction of interest currently set aside for reserves

```solidity
uint256 reserveFactorMantissa
```

***

#### accrualBlockNumber

Block number that interest was last accrued at

```solidity
uint256 accrualBlockNumber
```

***

#### borrowIndex

Accumulator of the total earned interest rate since the opening of the market

```solidity
uint256 borrowIndex
```

***

#### totalBorrows

Total amount of outstanding borrows of the underlying in this market

```solidity
uint256 totalBorrows
```

***

#### totalReserves

Total amount of reserves of the underlying held in this market

```solidity
uint256 totalReserves
```

***

#### totalSupply

Total number of tokens in circulation

```solidity
uint256 totalSupply
```

***

#### badDebt

Total bad debt of the market

```solidity
uint256 badDebt
```

***

#### protocolSeizeShareMantissa

Share of seized collateral that is added to reserves

```solidity
uint256 protocolSeizeShareMantissa
```

***

#### shortfall

Storage of Shortfall contract address

```solidity
address shortfall
```

***

#### reduceReservesBlockDelta

delta block after which reserves will be reduced

```solidity
uint256 reduceReservesBlockDelta
```

***

#### reduceReservesBlockNumber

last block number at which reserves were reduced

```solidity
uint256 reduceReservesBlockNumber
```

***

```solidity
struct RiskManagementInit {
  address shortfall;
  address payable protocolShareReserve;
}
```

#### isVToken

Indicator that this is a VToken contract (for inspection)

```solidity
function isVToken() external pure virtual returns (bool)
```

**Return Values**

| Name | Type | Description |
| ---- | ---- | ----------- |
| \[0] | bool | Always true |

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-v4.venus.io/technical-reference/reference-isolated-pools/vtoken/vtoken-interfaces.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
