Hey everyone!
It’s been a while since we’ve had some rewards tree changes but new network upgrades tend to bring them, and this time we have two: v9 from Patches and v10 from me (proposed here). Luckily they aren’t mutually exclusive; they can come in either order and one (or both) can be ratified without issue. I’m calling this v10 out of respect because his came first and I’m assuming it’s going to go through.
Anyway, unlike past updates where I dump all of the proposal contents into one of these, I wrote a proper RPIP this time. For your consideration:
The full details are covered in there but to summarize, in Houston we added a special setting called an “RPL withdrawal address” in accordance with RPIP-31. It’s distinct from the primary withdrawal address (the one you have today). If you have the RPL withdrawal address set, then all RPL rewards you claim will go to that address and all Smoothing Pool ETH you claim will go to your primary withdrawal address.
The problem, though, is that if you have an RPL withdrawal address set, you can’t claim rewards anymore as the node operator. Only the RPL withdrawal address is allowed to claim rewards. This is fine for RPL rewards but since the Smoothing Pool ETH is tied to the claiming system, it means only the RPL withdrawal address can claim Smoothing Pool ETH on your behalf. Bummer.
v10 proposes a fix to that via a small tweak to the rewards tree spec, which (thanks to a quirk in the contracts), doesn’t require any contract changes and doesn’t affect nodes that don’t have an RPL withdrawal address set. Here’s the TLDR:
- No contract changes
- Nodes without an RPL withdrawal address are unchanged
- Nodes with an RPL withdrawal address will be removed from the tree, and in their place will be 2 entries:
- 1 for the primary withdrawal address, with the ETH
- 1 for the RPL withdrawal address, for the RPL
- Yes, having tree entries that aren’t node operators actually works and yes, you can only claim for those entries from the entry address itself. Like I said, weird quirk.
This has an interesting side effect too: if the RPL withdrawal address is set, nodes with the same one will have their RPL aggregated into a single entry within the rewards tree so claiming it will only take a single transaction instead of n
transactions (n
being the number of nodes with that particular address set). Same story for ETH rewards. It reduces O(n) operations down to O(1) which is compelling for entities that plan to use this setup but are being blocked by linearly scaling gas costs.
That being said, this also has some important ramifications. For example, it means nodes with the RPL withdrawal address set can no longer claimAndStake
, and they can’t claim from the node address anymore - claims have to be done from both the primary withdrawal address and the RPL withdrawal address.
Instead of rehashing the entire proposal here I think that’s probably a fair summary. Please go take a look at the RPIP and let’s talk!