Charging Users and Value Reconciliation #118
Replies: 3 comments 2 replies
-
Steps to play in an Ephem Validator
Nuances around 2.A program can decide how an escrow can be created to play inside a specific validator/program.
For NOTE: this requires that the undelegation goes through the developer's program, i.e. via a CPI |
Beta Was this translation helpful? Give feedback.
-
|
My thoughts on the proposed approaches: NoteAll the above scenario only solve 1 problem: Scenario 1In this scenario, the lamports never "exit" the validator. I believe this is a huge problem that will have many foreseen and unforseen consequences. Example where that would be a problem: Vincent sends lamports to Gabriele in exchange for Ammunition:
- The ammunition can exit the validator
- But the lamports cannot
- Therefore I can print ammunition infinitely without incuring any costWe could "maybe?" still make this work with figuring out who's gonna pay for resize and commits while forcing everything to NOT use lamports somehow but at a very high complexity cost that is sub-optimal in my opinion. Scenario 2First of all quick note that I don't think that lamports should be set when the account is commited, any lamport reconcilation should happen at finalize/undelegate time IMO. That would be dangerous because: I don't understand the difference between scenario 2 and 3, is the only difference that the resize/commits is being paid by a central "Bank" account? Scenario 3This is in my opinion the most realistic and feasible option. I would describe this implementation as "lamports in the validator are real lamports" because:
This case is superior because it covers all other usecases:
|
Beta Was this translation helpful? Give feedback.
-
|
Closing and continuing in #122 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Initial Design for Charging Users and Value Reconciliation
Requirements
We need to:
Problems
To provide context, these are some use cases we should consider while designing a solution. Ideally, we should support all of them:
fees - (costs of infra + commits + security committee + DA).octane: Octane GitHub.Scenario 1
Assumptions
Possible ways to make someone else pay and prevent any extractive behavior from an attacker targeting the validator keypair:
FeeSpacePDA for each program/ER session to pay the lamports difference to make it rent-exempt. Developers could top up theFeeSpaceand set up instructions so that whenever a resize occurs, theFeeSpacehas enough lamports; otherwise, the finalization will fail (developers know when an account will increase in size and can decide who pays for it).Description
If the assumptions hold, point 2 in the requirements is addressed, and we can focus on implementing a solution for charging users for compute.
Proposed Solution for Charging Users
FeeVaultPDA, which is a PDA of thedelegation program. TheFeeVaultPDA holds SPL tokens.(mint_fee_token, ratio to lamports).RequestFeesto charge users. This instruction could be part of thedelegation_programand would transfer tokens from theFeeVaultPDA to the validator's identity keypair (on the base layer) once approved. Thecharge amountis determined using the pricing function. This could be associated with acommit recordand approved by the committee along with the state.Notes:
system_programowned accounts with1000 - current lamports).Scenario 2
Assumptions
original_account.system_ownedaccounts can never increase the lamports in the ER.initial lamportsbalance is projected from aFeeVaultPDA (instead of the current 1000 initial value).Notes
Proposed Solution for Value Reconciliation
lamports = 100→commit(a): lamports = 150Bank PDAtoA.lamports = 100→commit(a): lamports = 50AtoBank PDA.Proposed Solution for Charging Users
Bank PDA.Scenario 3
Assumptions
original_account.initial lamportsbalance is projected from aFeeVaultPDA (instead of the current 1000 initial value).Notes
Proposed Solution for Charging Users
Proposed Solution for Value Reconciliation
Beta Was this translation helpful? Give feedback.
All reactions