Request for Information to evaluate whether a Spigot can be deployed
To be answered by the prospective Borrower for each potential Revenue Contract (maybe insert extra column if there are 2 Revenue Contracts or more.
To be accompanied by some business and technical documentation explaining the Spigot and how it works related to a Spigoted Line of Credit.
Borrower name: | |||||
Subject | Question | Why is this important? | Showstopper response | Range of acceptable responses | |
REVENUE | 1 | Is there an owner/admin role on the Revenue Contract? | Revenue beneficiaries MUST NOT be mutable after Spigot initialization. If Spigot isnt hardcoded then we need some ownership to change recipient to Spigot and prevent further updates.
There either there must be no way to update any params, functions, caller address, etc. and hardcode Spigot OR we must be able to transfer access to all these functions to a single address (the Spigot) | MAYBE | |
2 | Can the owner of the Revenue Contract be changed? | We MUST transfer ownership to the of the Revenue Contract to the Spigot otherwise the deal isnt trustless | YES | ||
3 | Can the recipient of revenue from the Revenue Contract be changed? | We MUST transfer ownership to the of the Revenue Contract to the Spigot otherwise the deal isnt trustless.
If owner is default recipient than no changes required. | |||
3 | What token(s) is/are the revenue in? | ||||
4 | How is revenue stored/transferred when first received in the Revenue Contract? | Need to know if Spigot settings should be configured for push or pull payments | |||
5 | How is revenue stored/transferred when distributed to recipient? | Need to know if Spigot settings should be configured for push or pull payments | |||
7 | Is there a timelock built into the Revenue Contract? | ||||
8 | |||||
9 | Ideal payment structure for borrower? | ||||
10 | Are revenue tokens tradable on Line contract’s swapTarget ? | If revenue cant be traded then it can’t be used to repay borrowers debt programmatically. Loan either has to be in same illiquid token or revenue should not be considered as backing. | |||
6 | Are there events tracking in/outflows? | Allows us to automate claimRevenue calls offchain so Spigot owner does not have to worry about operations | N/A | ||
GOVERNANCE | 1 | What currently owns revenue generating contracts - EOA, multisig, DAO? | So we can evaulate migration process and hopefully select from a template | ||
2 | Is there a timelock? | So we can evaulate migration process and hopefully select from a template | |||
3 | Is entire offchain+onchain governance and decision making process documented? | So we can evaulate migration process and hopefully select from a template | |||
4 | Who do we contact if issues? | ||||
5 | Is there role based access, what do they do, and who has them? | ||||
How is ownership of Revenue Contract changed? | MUST ensure transfer ownership function conforms to Spigot expectations - 1 param that is address of new owner. | YES | |||
SECURITY | 1 | What functions MUST be whitelisted? | Need to whitelist so you can continuing managing and operating your protocol after transferring ownership to the Spigot | ||
2 | What functions can be left blacklisted? | ||||
3 | Is there an owner? What privileges does it have? | ||||
4 | Is the revenue generating contract or any underlying contract an upgradable proxy? | MUST NOT be upgradeable or Spigot must be only address that can upgrade. Upgradable allows Borrower to rugpull at any time, lock Spigot out of getting revenue, change revenue stream recipient, etc. | |||
Are there any backdoor access points besides admin control (or multiple admins allowed)? | |||||
How secure are the signer keys of stakeholder multisigs? |
Prior responses
IDLE Finance - Spigot EvaluationContract Specific Questions (ex. Idle Finance below)
- what is balancer pool doing?
- what is smart treasury?
- is there only 1 underlying token for all LPs?
- What is token deposit list?
- pretty sure withdrawUnderlying is the claimFunction
- Can everything be in ETH? Small change required to Spigot which would make this easier for you that we haven’t gotten to yet.
- do we have to get our Spigot whitelisted from smart treasury on your balancer pool to claim those tokens as revenue? (if calling
withdraw
on a bPool token bc there isn’t liquidity or faster for liquidation or some reason) - Who do we contact if issues figuring out information?
- can the owner of the underlying revenue generating contracts be transferred from FeeCollector to Spigot directly?
- answer no. treasury contract is hardcoded into
- ideal payment structure?
- kiba
- Spigot owns fee collector and is sole beneficiary
- Spigot has treasury or fee collector as
treasury
and governance or a multisig asoperator
- X0% of revenue to repay debt
- Idle
Check if revenue tokens are tradable on swapTarget
0x exchange addresses per network