On Chain Billing

In Figment's On Chain Billing model, each party receives its accurate share on chain – without the need for
any accounting, invoicing or off chain payment. This is achieved using Figment’s audited and battled
tested fee splitting smart contracts while the assets remain in the customer’s control.

The validator's fee recipient address is the wallet that receives execution layer rewards. For off chain billing, this is generally equal to the withdrawal address, unless specified otherwise.


For on chain billing, we set the validator's fee recipient to a fee splitting smart contract which rewards pass through (but are not held as a balance) and are split N ways. One fee splitter smart contract is deployed for each withdrawal address.

In the ETH API endpoints, you'll notice that for each validator, fee_recipient_address is set to the fee splitter contract, net_fee_payout_address is set to what the regular fee recipient would be (and is where the validator's net rewards are sent), and withdrawal_address remains the same. Note that for a new withdrawal address, a new fee splitter contract will be deployed once the validator(s) for that address are funded, which means that the fee_recipient_address will change even after you've called Create Validators and you should make sure to update it in your database.


Example

Here is an example of a three party split, where

  • Fee splitter contract address is: 0xE9EB3EEFe4b71C4Ea991869C5B3AE6B3B7907f45
  • Net fee payout address is: 0xe3e2ab62ae98a5fc599ff2dee0d9ea1a93b797fb
  • Figment's address is: 0xeD488E6cc4B030eb5BfddE3227C3D5da2b9040E8
  • Party 3's address is: 0xa1e3b3a77cf01cda4c5c20f88705c7512ceee1af