Sitowise
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) or withdrawAll(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. outstanding is the sum of every node balance, and rescue is bounded by freeBalance(), 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/prepare and /api/withdraw/confirm endpoints 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, where paymentRef is the payment transaction hash. It is recorded in paymentRefUsed, 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 unless msg.value equals the sum of amounts. 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 mintFor and 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 mode field on every distribution round all say where the money is coming from. Rounds funded by Sitowise are recorded as treasury, 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/:id and /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 treasury to swaps mode, 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.