$RENT on Pons. Contract address: launch soon Follow @rentdayxyz
Rentday
CAsoon

Share price

One vRENT is worth the vault's USDG divided by the vRENT outstanding, and only added fees change that ratio.

The formula

The price of one vRENT is the USDG the vault holds divided by the vRENT outstanding. Both numbers live on chain: totalAssets() returns the vault's USDG balance and totalSupply() returns the vRENT in existence. No oracle, valuation or operator input enters the calculation.

To read the price, the site calls convertToAssets(1e18) on the vault. The argument is one whole vRENT, since vRENT has 18 decimals, and the answer is its value in USDG base units, since USDG has 6. The site multiplies that answer by 1,000,000 and shows it with 12 decimals, the scale the Roll and the RollRegistry use.

The chain's answer stops at whole USDG base units (0.000001 USDG), so the last six of the twelve decimals on the live price are always zeros. A Roll calculates its prices from its own figures and fills all twelve.

ReadingValue (sample figures)
convertToAssets(1e18) returns1024472
In USDG1.024472
As the site shows it1.024472000000
price_close in sample Roll S41.024472821978

The first three rows are what the vault would return holding the sample month 4 balances. They are sample figures, not a reading from the live vault.

Opening price

An empty vault prices one vRENT at exactly 1.000000 USDG. The vault uses OpenZeppelin's virtual shares with a decimals offset of 12, so its price formula counts one extra USDG base unit and 10^12 extra vRENT base units. With nothing deposited, convertToAssets(1e18) works out to 10^18 × 1 ÷ 10^12 = 1,000,000, which is 1.000000 USDG. No seed deposit was needed to set the opening price.

At that price one USDG base unit buys 10^12 vRENT base units. From then on, each settlement adds the USDG settled divided by the vRENT outstanding at that moment, and the price is 1.000000 plus the sum of those additions.

What raises the price

The price rises when USDG enters the vault without new vRENT being minted. Under normal operation that happens once a month, when the operator settles the month's converted $RENT creator fees through addCapital on rent day.

Anyone can call addCapital, and a plain USDG transfer to the vault has the same effect on the price without emitting the CapitalAdded event. USDG added either way raises the price for every holder in proportion to their vRENT. addCapital reverts while no vRENT exists, because USDG added to an empty vault would be captured by the virtual shares.

What leaves the price unchanged

EventEffect on priceReason
A depositNoneNew USDG and new vRENT arrive together at the current price, so the ratio holds. Rounding favours the vault, so any dust nudges the price up.
A cash-outNoneUSDG leaves and vRENT is burned at the current price. Rounding can leave up to 0.000001 USDG behind, which nudges the price up.
The $RENT price movingNoneThe vault holds no $RENT and no ETH. Only fees that have been converted and settled reach it.
Fees accrued during the monthNone until rent dayAccrued fees sit with Pons, or in the owner wallet after a claim, until the operator settles them.

The sample data shows the first row. In sample month 2, deposits of 150,000 USDG arrived during the month. The Roll's price_open for month 2 is 1.005756983440, the same as month 1's price_close: the new USDG bought vRENT at that price and moved it for nobody.

Why trading and operations cannot lower it

The vault has no path for USDG to leave except a holder redeeming, and a redemption takes out USDG and burns vRENT at the same price. A falling $RENT price, a month without trades, a late claim or a missed settlement cannot take USDG out of the vault. At most they slow the price's rise or stop it.

A quiet month raises it by less. In the sample data, trading paid fees on 29 days of month 3, which added 11,053.862640 USDG. Month 4 had fees on 18 days, added 1,817.380810 USDG, and moved the price from 1.022891310062 to 1.024472821978. These are sample figures, not results.

This protection covers the vault's own accounting. The price is counted in USDG, so a problem with USDG itself would not show in it. The Risks page covers that case.

Rounding

Every division in the close engine truncates toward zero. ETH amounts stop at 18 decimals, USDG at 6, vRENT at 18 and prices at 12, and anything past the last digit is dropped. Dropped USDG fractions stay in the vault and belong to every holder.

You can see truncation in the Rolls. Sample month 2 closed with 1,164,392.884805 USDG over 1,149,141.395456140507849994 vRENT. That division runs on past twelve decimals; the Roll keeps 1.013272073749 and drops the rest.

On chain, ERC-4626 rounding also favours the vault: a deposit mints vRENT rounded down and a cash-out pays USDG rounded down. A deposit followed at once by a cash-out can return up to 0.000001 USDG less than went in.