SIMD-0267

Sets rent_epoch to a constant in the VM

Author: Brooks Prumo · Category: Core Protocol GitHub →

Feature Gate Status

Mainnet Active E801
Testnet Active E772
Devnet Active E892

RENtePQcDLrAbxAsP3k8dwVcnNYQ466hi2uKvALjnXx

TL;DR

Set the value of `rent_epoch`—as serialized into the VM for transaction processing—to a constant.

Summary

Set the value of `rent_epoch`—as serialized into the VM for transaction processing—to a constant.

Motivation

The `rent_epoch` field on an account is no longer meaningful. This is because all accounts must be rent exempt, and rent fees collection has been disabled (see SIMD-84). With this in mind, it would be beneficial to remove `rent_epoch` from the computation of a single account's hash. However, before we can remove the `rent_epoch` from the account hash computation, we must set the value of `rent_epoch`—as serialized into the VM for transaction processing—to a constant. If we did not do this, different validators could have different values for `rent_epoch` passed into the VM, which could result in different transaction results and thus cluster divergence.

Impact

The `rent_epoch` field in an account can be deprecated. This allows reclaiming and reusing these bytes for other purposes in the future. In certain rare cases the serialized `rent_epoch` of an account may previously have been `0` and will now be `u64::MAX`.

Security Considerations

None.