Benevolence explainer

⭐ Benevolence Dapp Explainer

The Benevolence Dapp is a decentralized blasting engine that converts matched USDC into route‑specific tokens and distributes them between a vault and the caller. It is fully non‑custodial, transparent, and permissionless.

Your PEWPEW balance is used only as a read‑only eligibility signal — it is never transferred, locked, or approved.

Each route defines:

– tokenOut — the asset being blasted
– vault — where most blasted tokens are sent
– primary USDC pool
– secondary USDC pool
– matched USDC — determines how many steps can be blasted

When a user blasts a route, matched USDC is swapped for tokenOut.
Most of the output goes to the route’s vault, and a small portion goes to the caller as a tier‑based reward determined by their PEWPEW balance.

🟦 PEWPEW Gating System (Read‑Only)

PEWPEW is never moved or approved.
Your balance is only read to determine:

– Blasting eligibility
– Cooldown tier
– Reward tier
– Primary start permissions
– Cancel permissions
– Reassign permissions
– Sweep permissions

Eligibility Thresholds

| PEWPEW Held | Permission / Benefit |
|————-|———————-|
| ≥ 1,000,000 | Eligible to blast |
| ≥ 10,000,000 | Reduced cooldown (180s), and full administrative functions |
| ≥ 20,000,000 | Same as 10M (no extra privileges) |
| ≥ 40,000,000 | Fastest cooldown (60s), Tier 5 rewards |

🟩 Tiered Reward System

Rewards are paid in tokenOut, but calculated using a USDC value per tier.
These values are owner‑adjustable and expressed in 6‑decimal USDC units.

Reward Tiers

| PEWPEW Held | Tier | Reward (USDC Value) |
|————-|——|———————-|
| 1M – 4.99M | Tier 1 | 0.05 USDC |
| 5M – 9.99M | Tier 2 | 0.10 USDC |
| 10M – 19.99M | Tier 3 | 0.15 USDC |
| 20M – 39.99M | Tier 4 | 0.20 USDC |
| ≥ 40M | Tier 5 | 0.25 USDC |

The contract:

1. Converts the USDC reward value into tokenOut using the route’s pathIn
2. Ensures the reward does not exceed the tier cap
3. Sends the reward to the caller

The remainder of tokenOut goes to the route’s vault.

🟧 Cooldown System (Final)

Cooldowns apply globally across all routes and depend on the caller’s PEWPEW balance.

Cooldown Tiers

| PEWPEW Held | Cooldown |
|————-|———-|
| < 10M | 300 seconds | | ≥ 10M | 180 seconds | | ≥ 20M | 120 seconds | | ≥ 40M | 60 seconds (fastest) | Cooldown is tracked per caller using lastBlastTime. --- ⭐ Administrative Privileges (Final) Anyone with ≥ 10,000,000 PEWPEW can: ✔ Start Primary Pools - First primary deposit requires ≥ 10M PEWPEW - After that, anyone may add primary ✔ Cancel Primary - Can cancel unspent primary USDC - Works whether blasting has begun or not - Canceled USDC becomes unassigned ✔ Reassign Unassigned - Can move unassigned → primary - Must respect half‑cap limits ✔ Sweep Stray USDC - Can sweep mismatched or leftover USDC into unassigned - Helps keep routes clean and balanced ✔ Full Blasting Access - Tier‑3+ rewards - Shorter cooldowns - No restrictions on blasting routes > 20M–39.99M PEWPEW holders do not gain extra privileges beyond cooldown and reward tier.

🔥 Blasting Workflow

1. Caller must hold ≥ 1M PEWPEW
2. Caller must not be in cooldown
3. Route must be enabled and not paused
4. Matched USDC determines how many steps can be blasted
5. Each step consumes:
– halfStep from primary
– halfStep from secondary
6. USDC is swapped for tokenOut using the route’s pathIn
7. Caller receives a tier‑based reward in tokenOut
8. Remainder goes to the route’s vault
9. Event Blasted is emitted

🟫 Deposits & Matching

Primary Deposits
– Anyone can deposit primary
– The first primary deposit for a route requires ≥ 10M PEWPEW
– First deposit must be ≥ 5 USDC
– Primary pool cannot exceed half of the route cap
– Only unspent primary can be canceled

Secondary Deposits
– Anyone can deposit secondary
– No PEWPEW requirement
– Same half‑cap limit

Matching Logic
Matched USDC = min(primaryAvailable, secondaryAvailable)

Steps available = matchedUSDC ÷ halfStep

🟪 Canceling & Reassigning

Cancel Primary (≥ 10M PEWPEW)
– Cancels unspent primary
– Moves canceled USDC → unassigned
– Works before or after blasting begins

Reassign Unassigned (≥ 10M PEWPEW)
– Moves unassigned → primary
– Must respect half‑cap limits

Sweep Stray USDC (≥ 10M PEWPEW)
– Sweeps mismatched or leftover USDC into unassigned
– Keeps route accounting clean

🟦 Route Configuration (Owner‑Only)

Routes can only be configured or removed if:

– They contain no funds, and
– They have no blasting history

Each route defines:

– tokenOut — the asset being blasted
– vault — where most tokenOut is sent
– pathIn — USDC → tokenOut swap path
– pathValue — tokenOut → USDC valuation path

Default Paths
When configuring a route, the contract automatically sets:

`
pathIn: USDC → WPLS → tokenOut
pathValue: tokenOut → WPLS → USDC
`

Owner may override with custom multi‑hop paths (2–4 tokens).

Route Signature Protection
Routes cannot duplicate (tokenOut, vault) pairs.

🟧 Slippage Controls

– Global slippage: 50–4900 bps
– Per‑route override: 0 (use global) or 50–4900 bps
– Enforced on every swap

🟩 Frontend‑Ready Views

The contract exposes rich read functions:

Route Status
– Enabled / paused
– tokenOut
– vault
– primaryAvailable
– secondaryAvailable
– matchedAvailable
– stepsAvailable
– slippageUsed

Global Status
– Total committed
– Total spent
– Total unspent
– Global slippage
– Step size
– Half‑step
– Minimum PEWPEW to blast
– Unassigned USDC

Caller Eligibility
– Can blast
– Cooldown active
– Seconds remaining
– Caller PEWPEW balance
– Cooldown tier

Reward Preview
– Reward USDC target
– Reward USDC cap
– Reward tokenOut amount
– Reward value in USDC
– Caller PEWPEW
– Capped PEWPEW used

🟦 PEWPEW Safety Guarantee

Your PEWPEW Is Always Safe

BenevolenceVault v1.8.x:

– Never transfers PEWPEW
– Never locks PEWPEW
– Never spends PEWPEW
– Never requests approval for PEWPEW
– Never burns PEWPEW
– Never escrows PEWPEW

PEWPEW is read‑only and used exclusively for:

– Eligibility
– Cooldown tier
– Reward tier
– Primary start permissions
– Cancel permissions
– Reassign permissions
– Sweep permissions

Non‑Custodial
The contract only holds:

– USDC (for blasting)
– tokenOut (from swaps)

It never holds PEWPEW.

Your PEWPEW stays in your wallet — always.