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_receiveddivided byeth_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 theaddCapitaltransaction. ItsCapitalAddedevent carries the amount, which should equalusdg_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.
| Item | Meaning |
|---|---|
usdg_prev | USDG in the vault at the previous Roll's close. Zero before the first Roll. |
flows | The 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_open | USDG in the vault at the snapshot taken before settlement. |
shares_open | vRENT outstanding at the same snapshot, with 18 decimals. Settlement mints no vRENT, so the same count applies after it. |
usdg_close | USDG in the vault after settlement. |
price_open | Price before settlement, with 12 decimals. |
price_close | Price 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.
- The sum of
eth_claimedover all claims =eth_converted. usdg_per_eth=usdg_received÷eth_converted, truncated to 6 decimals.usdg_to_vault+operator_cut=usdg_received.operator_cut=usdg_received×operator_bps÷ 10,000, truncated to 6 decimals.usdg_prev+flows=usdg_open.usdg_open+usdg_to_vault=usdg_close.price_open=usdg_open÷shares_open, truncated to 12 decimals.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_txshould show the ETH claimed from Pons arriving in the owner wallet. - The
swap_txshould showeth_convertedgoing in andusdg_receivedcoming out. - The
settle_txshould showusdg_to_vaultmoving from the owner wallet into the vault.
Sample Rolls leave the transaction fields empty, because nothing in them happened on chain.