home / skills / plurigrid / asi / solver-fee
This skill manages solver fee distribution in intent coordination, optimizing payments to solvers, validators, and generators across GF(3) roles.
npx playbooks add skill plurigrid/asi --skill solver-feeReview the files below or copy the command above to add this skill to your agents.
---
name: solver-fee
description: Solver Fee Skill
trit: 0
color: "#26D826"
catsharp:
home: Prof
poly_op: ⊗ (parallel)
kan_role: Adj
bicomodule: true
---
# solver-fee Skill
> *"Fair compensation for coordination. The solver's incentive to find optimal solutions."*
## Overview
**Solver Fee** implements fee mechanisms for intent solvers in Anoma-style architectures. Solvers coordinate between intent generators and validators, earning fees for finding optimal matches.
## GF(3) Role
| Aspect | Value |
|--------|-------|
| Trit | 0 (ERGODIC) |
| Role | COORDINATOR |
| Function | Coordinates fee distribution between parties |
## Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ SOLVER FEE FLOW │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Intent Creator Solver Validator Executor │
│ (+1 GEN) (0 COORD) (-1 VAL) (output) │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌───────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Offer │───────►│ Match │──────►│ Validate │──►│ Execute │ │
│ │+ fee │ │+ solve │ │+ verify │ │ │ │
│ └───────┘ └────────┘ └──────────┘ └─────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌──────────┐ │
│ └─────────►│ Fee Pool │ │
│ └──────────┘ │
│ │ │
│ ▼ │
│ Solver Reward │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## Fee Models
```python
class FeeModel:
"""Base class for solver fee computation."""
TRIT = 0 # COORDINATOR role
def compute_fee(self, intent, solution) -> int:
raise NotImplementedError
class PercentageFee(FeeModel):
"""Fee as percentage of transaction value."""
def __init__(self, basis_points: int = 30):
self.basis_points = basis_points # 30 = 0.30%
def compute_fee(self, intent, solution) -> int:
value = solution.output_value
return value * self.basis_points // 10000
class GasPlusPremium(FeeModel):
"""Gas cost plus fixed premium."""
def __init__(self, premium_bps: int = 10):
self.premium_bps = premium_bps
def compute_fee(self, intent, solution) -> int:
gas_cost = estimate_gas(solution) * gas_price()
premium = gas_cost * self.premium_bps // 10000
return gas_cost + premium
class AuctionFee(FeeModel):
"""Competitive auction for solver fees."""
def compute_fee(self, intent, bids: list) -> int:
# Second-price auction: winner pays second-highest bid
sorted_bids = sorted(bids, key=lambda b: b.fee, reverse=True)
if len(sorted_bids) >= 2:
return sorted_bids[1].fee # Second price
return sorted_bids[0].fee if sorted_bids else 0
```
## GF(3) Fee Conservation
```python
class GF3FeeDistribution:
"""Distribute fees while maintaining GF(3) conservation."""
def distribute(self, total_fee: int) -> dict:
"""
Split fee across GF(3) roles.
GENERATOR (+1): Intent creator rebate (optional)
COORDINATOR (0): Solver fee
VALIDATOR (-1): Validator reward
Sum must balance.
"""
solver_share = total_fee * 60 // 100 # 60% to solver
validator_share = total_fee * 30 // 100 # 30% to validator
rebate = total_fee - solver_share - validator_share # 10% rebate
return {
'generator': rebate, # +1 role
'coordinator': solver_share, # 0 role
'validator': validator_share, # -1 role
'sum': rebate + solver_share + validator_share,
'conserved': True # Fees sum to original total
}
```
## Juvix Implementation
```juvix
-- Solver fee in Juvix
module SolverFee;
type Fee := mkFee : Nat -> Fee;
computeFee : Intent -> Solution -> Fee;
computeFee intent solution :=
let value := solution-output-value solution in
let bps := 30 in -- 0.30%
mkFee (value * bps / 10000);
type FeeDistribution :=
mkDistribution : Fee -> Fee -> Fee -> FeeDistribution;
-- Fields: solver, validator, rebate
distribute : Fee -> FeeDistribution;
distribute (mkFee total) :=
let solver := total * 60 / 100 in
let validator := total * 30 / 100 in
let rebate := total - solver - validator in
mkDistribution (mkFee solver) (mkFee validator) (mkFee rebate);
```
## Integration with Anoma Intents
```python
def solve_with_fee(intent, solver):
"""
Complete solving workflow with fee handling.
GF(3) triad:
- intent (+1): User creates
- solver (0): Finds match
- validator (-1): Verifies
"""
# Solver finds optimal solution
solution = solver.solve(intent)
# Compute fee
fee = compute_fee(intent, solution)
# Attach fee to solution
solution.solver_fee = fee
solution.solver = solver.address
return solution
```
## GF(3) Triads
```
solver-fee (0) ⊗ anoma-intents (+1) ⊗ intent-sink (-1) = 0 ✓
solver-fee (0) ⊗ polyglot-spi (+1) ⊗ dynamic-sufficiency (-1) = 0 ✓
solver-fee (0) ⊗ aptos-gf3-society (+1) ⊗ merkle-proof-validation (-1) = 0 ✓
```
---
**Skill Name**: solver-fee
**Type**: Fee Mechanism / Economic Coordination
**Trit**: 0 (ERGODIC - COORDINATOR)
**GF(3)**: Coordinates fee distribution between intent roles
## Cat# Integration
This skill maps to Cat# = Comod(P) as a bicomodule in the Prof home:
```
Trit: 0 (ERGODIC)
Home: Prof (profunctors/bimodules)
Poly Op: ⊗ (parallel composition)
Kan Role: Adj (adjunction bridge)
```
### GF(3) Naturality
The skill participates in triads where:
```
(-1) + (0) + (+1) ≡ 0 (mod 3)
```
This ensures compositional coherence in the Cat# equipment structure.
This skill implements solver fee mechanisms for intent-based coordination systems. It defines fee models, conservation rules, and distribution logic so solvers, validators, and intent creators are compensated consistently. The design enforces GF(3) fee conservation and supports percentage, gas-plus-premium, and auction-based fees.
The skill computes a solver fee for a proposed solution, attaches the fee and solver identity to the solution, and routes fee shares into a fee pool. Fee models include percentage-of-value, gas-plus-premium, and second-price auction variants. A GF(3)-aware distributor splits the collected fee among generator (rebate), coordinator (solver), and validator while preserving the total. Integration points expose compute_fee and distribute primitives for workflow composition.
How are fees split between roles?
Fees are split by a GF(3) distribution example: 60% solver, 30% validator, 10% rebate to generator, with sums conserved.
Which fee model should I pick?
Use PercentageFee for value-aligned payments, GasPlusPremium when gas dominates cost, and AuctionFee when you want competitive pricing and market-driven fees.
Does the skill prevent fee loss?
Yes. The distribution routine enforces that the shares sum to the original total and returns a conserved flag for accounting checks.