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

Reading a Roll

One file per month: every fee claim, the swap, the settlement and the resulting price.

The file

The Roll is a CSV file the operator publishes on rent day, the 1st of each month, covering the month before. Its header gives the format version, the Roll number (001, 002 and so on), the period in the form YYYY-MM and the publication date. Five sections follow, always in the same order: days, claims, conversion, settlement and balance.

The Roll page shows the same figures, and Roll format documents the exact bytes. Until the first real Roll is published, the site shows six sample Rolls numbered S1 to S6, built from illustrative fee data and labelled Sample.

Days

The ETH creator fee that $RENT trading accrued on each day, with the columns date and fee_eth. Days without trading are left out. The section is optional: the operator fills it when Pons shows fees per day, and an empty section still prints its header.

The street drawing on the site reads this section. Each window is a day of the month, and a window is lit when that day appears here with a fee above zero.

The day figures are for information. The money trail runs through the claims, and the checks below use the claims.

Claims

One row for each time the operator claimed the creator fee from Pons during the month, with the columns date, eth_claimed and claim_tx. The claim transaction moves ETH from Pons to the owner wallet. Open it on the explorer and compare the amount with eth_claimed.

Conversion

One row for the swap of the claimed ETH to USDG on Robinhood Chain:

  • eth_converted: the ETH swapped, equal to the sum of the claims.
  • usdg_received: the USDG the swap delivered.
  • usdg_per_eth: the rate achieved, usdg_received divided by eth_converted, truncated at six decimals.
  • swap_tx: the hash of the swap transaction.

Settlement

One row for the transfer into the vault on rent day:

  • usdg_to_vault: the USDG added to the vault.
  • operator_bps: the operator's share in basis points. It is 0.
  • operator_cut: the USDG the operator kept, 0.000000 at a share of 0.
  • settle_tx: the hash of the addCapital transaction. Its CapitalAdded event carries the amount, which should equal usdg_to_vault.

Balance

Seven named values that carry the month from the vault's previous state to the new price. Amounts are in USDG with six decimals unless the table says otherwise.

ItemMeaning
usdg_prevUSDG in the vault at the previous Roll's close. Zero before the first Roll.
flowsThe change in the vault's USDG between the previous close and this settlement: deposits minus cash-outs, plus any plain USDG transfer into the vault. Negative when cash-outs were larger.
usdg_openUSDG in the vault at the snapshot taken before settlement.
shares_openvRENT outstanding at the same snapshot, with 18 decimals. Settlement mints no vRENT, so the same count applies after it.
usdg_closeUSDG in the vault after settlement.
price_openPrice before settlement, with 12 decimals.
price_closePrice after settlement, with 12 decimals.

On a real Roll, usdg_open and shares_open are the vault's totalAssets() and totalSupply(), read from chain by the close tool right before the operator settles.

Checks you can do by hand

Eight identities hold in every Roll. You can check them with a calculator and the file. The same checks are coded in checkIdentities in site/js/close.js, and the close tool refuses to write a Roll that fails any of them.

  1. The sum of eth_claimed over all claims = eth_converted.
  2. usdg_per_eth = usdg_received ÷ eth_converted, truncated to 6 decimals.
  3. usdg_to_vault + operator_cut = usdg_received.
  4. operator_cut = usdg_received × operator_bps ÷ 10,000, truncated to 6 decimals.
  5. usdg_prev + flows = usdg_open.
  6. usdg_open + usdg_to_vault = usdg_close.
  7. price_open = usdg_open ÷ shares_open, truncated to 12 decimals.
  8. price_close = usdg_close ÷ shares_open, truncated to 12 decimals.

Between consecutive Rolls, usdg_prev equals the previous Roll's usdg_close.

Worked through on sample month 4 (sample data): five claims of 0.111146, 0.195253, 0.164427, 0.096880 and 0.036075 ETH add up to 0.603781, the eth_converted. The swap delivered 1,817.380810 USDG, a rate of 3,010.000000. With an operator share of 0, all 1,817.380810 went to the vault. The vault held 1,175,446.747445 USDG before settlement and 1,177,264.128255 after. Divided by 1,149,141.395456140507849994 vRENT, those give a price_open of 1.022891310062 and a price_close of 1.024472821978.

Checking against the chain

The identities prove the file is consistent with itself. To check it against what happened, open each transaction it names:

  • Each claim_tx should show the ETH claimed from Pons arriving in the owner wallet.
  • The swap_tx should show eth_converted going in and usdg_received coming out.
  • The settle_tx should show usdg_to_vault moving from the owner wallet into the vault.

Sample Rolls leave the transaction fields empty, because nothing in them happened on chain.