🎯 North Star

Make the Saturn Payouts pipeline verifiable to each L1 Operator while keeping our payments code private.

Requirements

Each milestone should improve on at least one of the following axes.

Milestones

Milestone 1: Payment Splitter Contract & Payout Factory Contract

Untitled

Here we replace the existing payout pipeline, which involves the dispensation of funds from a single wallet with a payment splitter contract. Broadly, this contract, when created, takes in a map of payees to payout amount. A callable release function on the contract can then send the owed funds to a specific payee (conditional on the contract holding sufficient funds to do so). Note that release is callable by anyone.

The steps for the the deployment of the contract are:

  1. Call initialize with the payout map and fund contract with sufficient FIL to fulfill all owed payments.
  2. Users can call releasable to see how much the are owed.
  3. Users can call release to receive reward.

For a spec and description for each of the contract’s functions see below.

Payment Splitter Contract Spec

https://github.com/filecoin-saturn/contracts

The PaymentSplitter fixes payees and rewards when instantiated and its likely we’ll need to manage a large number of these splitter contracts. To aid in the management of these contracts, we need a “longer-lasting” factory contract that spins up a payment splitter at each payment epoch and keeps track of all previous ones, so that node operators can claim their rewards from all payment splitters at any point in the future. This motivates the PayoutFactory contract.