Resources
Changelog
What has shipped, when, and what it changed for holders. Anything that affects your position is recorded here rather than announced once and forgotten.
26 August 2026Balances moved on chain
- What this means if you hold a node. Nobody needs Sitowise for you to be paid. Your balance is ETH the contract is holding against your node id, and
withdraw(id, to)orwithdrawAll(to)is a call you make yourself, from your own wallet, with no server, no signature and no permission involved. If this site and everyone behind it vanished tomorrow, the call would still work against the verified contract. - SitowiseFactory redeployed with on-chain balances. Each node now carries a balance, a total received and a total withdrawn in contract storage.
outstandingis the sum of every node balance, andrescueis bounded byfreeBalance(), so the owner cannot reach holder money under any sequence of calls. Verified on the explorer; the address is on Addresses. - The EIP-712 voucher path and the treasury contract were removed. Balances used to be kept off chain and settled against a signature from a signer key. Vouchers existed to save gas, and gas on this chain is around 0.03 gwei, so the complexity bought nothing. There is no signer key any more, no voucher, no deadline, no allowance and no treasury contract. The
/api/withdraw/prepareand/api/withdraw/confirmendpoints were deleted with them; there are no withdraw endpoints, because withdrawing needs no API at all. - Payment moved to a plain transfer. A node is bought by sending the price to the payments wallet, an ordinary account outside the contract. A watcher sees the transfer and the relayer calls
mintFor(to, paymentRef)and pays that gas, wherepaymentRefis the payment transaction hash. It is recorded inpaymentRefUsed, so one payment backs exactly one node and anyone can match a node to the payment that bought it. See Settlement. - Credits arrive with their money attached. Rounds are settled by
creditBatch(ids, amounts), a payable call that reverts unlessmsg.valueequals the sum ofamounts. A node balance can no longer exist without the ETH behind it. - Three roles, separated. The owner is the cold deployer key and may change roles, pause new mints, set the per-wallet cap and rescue unattached funds. The relayer may only mint. The distributor may only credit. None of them can withdraw from a node. Ownership transfer is two-step, so a typo cannot brick the admin surface.
- Pausing no longer touches withdrawals. The pause flag is read by
mintForand nowhere else. There is no setting that can stop you taking your balance out.
24 August 2026First public release
- Nodes, the dashboard and the ledger went live. Buying a node, listing what a wallet holds, and following what each node has been credited. The settlement design that shipped with it was replaced two days later by the entry above.
- Launch-period funding stated on every relevant surface. The landing page, these docs, the contract comments and the
modefield on every distribution round all say where the money is coming from. Rounds funded by Sitowise are recorded astreasury, not dressed up as swap revenue. - The hook was documented as a plan, not a product. It is not deployed, no pool names it, and no figure on this site comes from swap flow. That has been said plainly from the first day rather than added later; see The hook lifecycle.
- Public API.
/api/stats,/api/nodes/:address,/api/node/:idand/api/distributions, rate limited per IP, with one error envelope. See the API overview. - Documentation published. The full set, covering the protocol, nodes, payouts, the contract interface and the API, including Risks and Audits.
What gets recorded here
Every change that alters your position or the rules you deployed under, whether or not it is convenient to publish:
- A change to the node price, which lives off chain, or to the payments wallet you send it to.
- A change to the per-wallet cap, the relayer or the distributor, all of which emit an event on chain anyway.
- Minting being paused or unpaused. Withdrawals cannot be paused.
- The switch from
treasurytoswapsmode, which is the single change these docs point at most often. - Any reduction, pause or end of launch-period funding. That is the change holders most need to know about, so it goes here first.
- A contract deployment, including the address it landed at.
- Breaking API changes. Additive fields are not breaking; ignore fields you do not recognise.
On-chain configuration changes emit events regardless of what any page says. Reading the chain directly is the way to check that this log is complete; see Events.