Sitowise
Getting started

Quick start

Four steps, two transactions, and one signature. This page walks the whole path and says what happens on chain at each point, so you can tell a slow network from a stuck transaction.

Before you start

You need a browser wallet holding ETH on Robinhood Chain, chain id 4663. Bridged ETH from another network does not count until it has actually arrived on 4663. Budget slightly more than the node price, because you pay gas on top of it.

WhatValue
NetworkRobinhood Chain, chain id 4663 (0x1237)
RPChttps://rpc.mainnet.chain.robinhood.com
Node price0.02 ETH, exact, plus gas
Per wallet25 nodes maximum

Full detail, including how to add the network by hand, is on Requirements.

1. Connect and sign in

Open the dashboard and connect your wallet. You will be asked to sign a plain text message. That signature proves you control the address and creates a session cookie. It is not a transaction, it costs no gas, and it grants no permission to move funds.

If your wallet is on another network, the dashboard offers to switch, and to add Robinhood Chain if the wallet has never seen it. Approve both prompts and you land back on the same screen.

Several extensions inject themselves as the same browser object, so a button labelled with one wallet can open another. The dashboard discovers wallets through EIP-6963 and lists each one under its real name. Pick the one you meant.

2. Deploy a node

Press Deploy a node. There is no contract call here. Your wallet opens a plain ETH transfer of exactly 0.02 ETH to the payments wallet, which is an ordinary account and not the factory. The modal shows the address and the amount before you sign, and both are re-read from the server immediately beforehand so a price change cannot turn into a transfer that no longer matches.

What the wallet is signing
to:     payments wallet   // shown in the modal, not the factory
value:  0.02 ETH
data:   none              // a plain transfer
chain:  4663

Paying and minting are two separate moments, in this order:

  1. Your transfer confirms. The dashboard keeps the payment hash on screen throughout.
  2. A watcher reads the payments wallet and picks the transfer up, once it is a couple of blocks behind the head.
  3. The relayer calls mintFor(you, paymentRef) and pays that gas. paymentRef is your payment’s transaction hash, so the sale is checkable in the explorer, and the contract records it in paymentRefUsed so one payment can back exactly one node.
  4. The node appears in your list, usually within a minute. The id is assigned by the contract, not by the website.

The amount has to be exact. A transfer for anything else is held for manual review rather than minting a node. If the node has not appeared by the time the modal stops waiting, it is queued rather than lost: keep the payment hash.

3. Watch it accrue

Value is credited to nodes in rounds. A round is one creditBatch transaction that sends the ETH and assigns it to node balances in the same call, so the money is on your node the moment the round confirms. The dashboard shows balance, total received and total withdrawn per node, and the balance is what you can withdraw right now.

There is no schedule published anywhere, and the size of a round is not fixed. During the launch period rewards are funded by Sitowise and can be reduced or stopped. Read Distribution for the mechanics and Risks for what that means for you.

4. Withdraw

One transaction, sent by you, from the wallet that owns the node. There is no server in this path: nothing to prepare, nothing to request, nothing that expires, and no signature from anyone else.

  1. Press Withdraw on one node, or Withdraw all for the lot. The dashboard reads the balance straight from the contract and shows you that figure rather than one carried in from its own database.
  2. Check the destination, which defaults to the connected wallet, and confirm. Your wallet calls withdraw(id, to) for a single node, or withdrawAll(to), which sweeps every node you own and pays the combined total in one transfer.

There is no amount field, because neither function takes an amount. A withdrawal always moves the node’s whole balance and leaves it at zero. What actually moved is read back out of the Withdrawn events in your own receipt, so a credit that lands between the read and the transaction is paid out too.

Gas for that transaction is yours, and it is the only gas you pay. The value goes to the address you named, which does not have to be the wallet that signed in. See Destination addresses, and Withdrawing for every way the call can fail.

Pausing the contract stops new mints. It never stops a withdrawal, and there is no setting that can. If the dashboard is down you can call either function against the verified contract on the explorer, or with cast, and get the same result.

Verifying it yourself

Everything above is visible on chain. Two reads against the factory tell you the truth without trusting this site.

cast, from the contracts directory
# every node id held by an address
cast call $FACTORY "nodesOf(address)(uint256[])" $YOUR_ADDRESS \
  --rpc-url https://rpc.mainnet.chain.robinhood.com

# owner, createdAt, balance, totalReceived, totalWithdrawn for node 1
cast call $FACTORY "nodeInfo(uint256)(address,uint64,uint256,uint256,uint256)" 1 \
  --rpc-url https://rpc.mainnet.chain.robinhood.com

The public API returns the same figures over HTTP. Start at the API overview.