This document describes the trust assumptions of the SATO protocol.
SATO is designed to minimize discretionary trust in administrators, treasury managers, governance committees, and off-chain reserve operators.
It does not eliminate all trust assumptions.
Instead, it shifts trust toward verified smart contract execution, Ethereum consensus, Uniswap v4 settlement behavior, and user-selected execution routes.
This document is not an audit report.
SATO's trust model is based on reducing human discretion over monetary behavior.
Participants should not need to trust an operator to:
- mint tokens fairly
- manage reserve assets
- decide redemption policy
- pause or unpause the protocol
- blacklist users
- update monetary rules
- withdraw protocol reserves
The protocol attempts to encode monetary behavior directly into deployed contracts.
SATO does not rely on a discretionary issuer.
New SATO is minted through curve execution.
SatoToken.mint() is restricted to the locked SatoHook contract.
ETH reserve custody is held by SatoHook.
The hook does not expose an owner withdrawal function, governance withdrawal function, or treasury transfer function.
The sell-side reserve is exposed as:
curveReserveEth = address(SatoHook).balance - feesAccrued
The deployed core contracts do not expose upgrade paths or proxy implementation replacement logic.
Monetary behavior is defined by deployed verified source code.
SatoToken does not implement:
- pause controls
- blacklists
- whitelists
- transfer taxes
- account freezing
- administrative transfer restrictions
The curve pool does not rely on ordinary external AMM liquidity.
External liquidity additions revert with:
LiquidityAdditionsForbidden()
The hook acts as the counterparty for curve-routed swaps.
SATO minimizes discretionary operator trust, but the following assumptions remain.
Participants trust Ethereum Mainnet for:
- transaction ordering
- state execution
- consensus
- block production
- finality assumptions
A failure at the Ethereum layer can affect SATO.
Participants trust that the deployed contracts behave as intended.
This includes:
SatoTokenSatoHookCurveSatoSwapRouter- integrated Uniswap v4 interfaces
This documentation does not replace independent smart contract review.
SATO curve execution uses the Uniswap v4 PoolManager as its settlement layer.
Participants trust the configured PoolManager address and its settlement behavior.
Direct curve interaction may be routed through SatoSwapRouter.
The official SatoSwapRouter is verified and minimal, but users still need to verify the transaction route and calldata they approve.
Third-party routers or aggregators may introduce additional trust assumptions.
Users may interact through websites, wallets, aggregators, or custom scripts.
A malicious or incorrect frontend can present misleading quotes, route through the wrong pool, or construct unexpected transactions.
Users should verify transaction details when possible.
The protocol does not guarantee secondary market liquidity.
Secondary market prices are determined by market participants, liquidity providers, routing, slippage, and volatility.
A user may choose between:
- curve mint/burn route
- secondary AMM route
- aggregator route
Different routes can produce different outcomes.
The protocol does not guarantee that the selected route is economically optimal.
Trust boundary:
ERC-20 accounting and locked mint/burn authorization
Important checks:
minteris locked toSatoHook- no owner mint path
- no pause path
- no blacklist path
- no transfer tax path
Trust boundary:
monetary execution, curve state, reserve custody
Important checks:
- only configured
PoolManagercan call hook entry points - only configured ETH/SATO pool is accepted
- external liquidity additions are rejected
- curve buys and sells update
ethCumandtotalMintedFair curveReserveEth()excludesfeesAccrued
Trust boundary:
direct curve routing helper
Important checks:
- router is not the reserve holder
- router does not define curve math
- router does not authorize minting or burning independently
- router routes through
PoolManagerand passes hook data toSatoHook
Trust boundary:
ordinary market trading
Secondary market trades do not mint SATO, burn SATO, or update curve reserve state.
They only transfer existing SATO between market participants.
Users do not need to trust a SATO operator to:
- maintain the reserve manually
- approve redemptions
- decide who can mint
- decide who can sell
- adjust the bonding curve
- upgrade token logic
- pause transfers
- blacklist addresses
- withdraw reserve ETH
These controls are not exposed by the deployed core contracts.
Users should verify:
- they are interacting with the documented contract addresses
- the route is the intended curve or secondary route
- transaction calldata matches expected action
- slippage and price impact are acceptable
- wallet approvals are appropriate
- frontend links are authentic
- scanner output is interpreted with protocol context
SATO reduces trust in operators by encoding monetary behavior into deployed contracts.
The protocol removes or minimizes trusted roles related to issuance, reserve custody, upgrades, transfer restrictions, and administrative intervention.
Remaining trust assumptions are technical and market-based: Ethereum execution, deployed contract correctness, Uniswap v4 settlement behavior, router usage, frontend integrity, and secondary liquidity.
docs/security/02_Threat_Model.mddocs/security/04_Security_Guarantees.mddocs/security/05_False_Positive_Analysis.mddocs/security/06_Scanner_Compatibility.mddocs/protocol/03_ERC20.mddocs/protocol/04_SatoHook.mddocs/protocol/06_Reserve_Model.md