Sitowise
Resources

Glossary

Every term these pages use, defined once and in the order a reader meets them rather than alphabetically.

The protocol

Hook. A contract that a Uniswap v4 pool calls at fixed points during an operation. Sitowise implements one of those points, afterSwap. A hook’s address encodes which points it implements, so it has to be deployed to a mined address. See The hook lifecycle.

PoolManager. The single Uniswap v4 contract that holds every pool and calls hooks. It is the only address permitted to call Sitowise’s afterSwap.

Pool. A trading pair inside the PoolManager, identified by a PoolKey. The key includes the hook, which is why a pool’s hook is fixed at initialisation and can never be changed.

Specified and unspecified side. A swap fixes one side and lets the other float. Selling exactly one token specifies the input; buying exactly one token specifies the output. Uniswap v4 only lets an afterSwap hook move the unspecified side, which is where Sitowise’s share is charged.

Share, shareBps. The fraction of the unspecified side the hook keeps, in basis points. The hook is being written to 25 bps with a hard cap of 500 bps. Nothing on chain enforces either figure today, because the hook is not deployed.

Accrual. Value taken by the hook out of a swap. There is none: the hook is not deployed and no pool names it, so nothing on this site comes from swap flow. What funds rewards today is on How accrual works.

Sweep. Moving accrued value off the hook and into the factory, where it can be credited to nodes. The hook is not deployed, so nothing is being swept today; see The hook lifecycle.

Nodes and the ledger

Node. A numbered record in the factory contract, bought for 0.02 ETH. It carries an id, an owner, a creation time, a balance and two running totals, and nothing else. Not transferable, not a token. See Node model.

Payment reference, paymentRef. The transaction hash of the plain ETH transfer that paid for a node. It is passed to mintFor, emitted in NodeMinted, and recorded in paymentRefUsed, so one payment backs exactly one node and a second attempt reverts with RefAlreadyUsed. It is what lets anyone match a node to the payment that bought it in the explorer. See Settlement.

Payments wallet. The ordinary account that receives node payments. It is not the factory and not any contract, so purchase money never enters the contract and can never be paid out as a reward. It is the only Sitowise address you ever send ETH to; it is printed on Addresses.

Relayer. The operator key allowed to call mintFor, and nothing else. It watches for payments and creates the node, paying that gas itself. It holds no user funds and cannot touch a node balance; a leak costs unauthorised mints and gas.

Distributor. The operator key allowed to call creditBatch, and nothing else. Because that call is payable and must carry the ETH being credited, this key holds the payout float. It cannot mint, cannot change any setting, and cannot withdraw from a node.

Chain node id. The id the contract knows, sequential from 1 and never reused. Displayed zero padded as #0001. This is the id every money path uses.

Ledger row id. The operator database’s own identifier for a node. Returned alongside the chain id, and never accepted where money moves. See Node numbering.

Active and retired. Whether a node is included in new distribution rounds. The state lives off chain and never affects your ability to withdraw what has already been credited.

Credit. Value assigned to one node in one round. A credit is an on-chain event: it raises the node’s balance and arrives with the ETH that backs it in the same transaction.

Credit batch, creditBatch. creditBatch(ids, amounts), the payable call the distributor uses to credit many nodes at once. The contract reverts with ValueMismatch unless msg.value equals the sum of amounts, which is why a balance can never exist without the ETH behind it. See Distribution.

Round, distribution. One pass that credits every active node, settled on chain as a single creditBatch transaction. Each round records where its money came from. See Distribution.

Mode: treasury or swaps. The name for where a round’s money came from, recorded per round and exposed in the public API. treasury means Sitowise funded the round out of its own funds. swaps means it came from hook accrual. It is a label on the source of the ETH, not a contract: there is no treasury contract, and the mode changes nothing about how the credit reaches your node.

Total received. Everything ever credited to a node, held on chain as the totalReceived field of nodeInfo. It only ever increases, and withdrawing does not reduce it.

Total withdrawn. Everything ever paid out of a node, held on chain as the totalWithdrawn field of nodeInfo. Also only ever increases, and advanced before any ETH moves.

Balance, withdrawable. What a node holds right now, stored on chain as ETH the contract is actually sitting on. It is not a figure derived from a ledger elsewhere. A withdrawal takes all of it and sets it to zero.

Payouts

Withdraw, withdrawAll. withdraw(id, to) empties one node; withdrawAll(to) sweeps every node the caller owns. Both are called by the node owner from their own wallet, neither takes an amount, and neither can be paused. See Withdrawing.

Outstanding. outstanding, the sum of every node balance: what the contract owes holders. It rises with each credit and falls with each withdrawal, and the contract is written so it always matches the balances behind it. A fuzzed invariant checks that.

Free balance. freeBalance(), the contract’s ETH minus outstanding: money the contract holds that belongs to no node. It is what arrives through fund() or a bare transfer, and it is the only money the owner can ever remove.

Rescue. rescue(to, amount), the owner-only call for taking unattached funds back out. Anything above freeBalance() reverts with ExceedsFree, so it cannot reach a node balance under any sequence of calls. This is the holders’ guarantee; see Security model.

Solvent. isSolvent() returns whether the contract’s ETH still covers outstanding. Anyone can read it, without an account and without this site.

General

Wei. The smallest unit of ETH, one quintillionth. All accounting is in wei, and every API field ending in Wei is a decimal string for that reason.

EIP-6963. The standard by which wallet extensions announce themselves individually. It is how the dashboard lists wallets under their real names instead of guessing from an injected flag.

Robinhood Chain. The network everything here runs on, chain id 4663. ETH is the native currency.

CREATE2. Deployment at an address derived from a salt, which is what makes it possible to hit the specific address a v4 hook needs.