Sitowise
Payouts

Troubleshooting

Things that go wrong, what each one actually means, and the shortest way out. Almost none of them put funds at risk, and this page says which ones do.

The wallet did not open

Usually a popup blocker, an extension that is locked, or a second wallet that has claimed the connection. Try in order:

  1. Unlock the extension and press the button again.
  2. Allow popups for this site.
  3. Disable the wallets you are not using for a moment. Several extensions announce themselves under the same name, and the one that answers is not always the one you meant.
  4. Reload the page. The connection is re-established on load.
The dashboard lists wallets through EIP-6963, which asks each extension for its own identity rather than guessing from an injected flag. If the wallet you expect is missing from the list, that extension is not announcing itself, and reinstalling or updating it usually fixes the announcement.

Wrong network

Sitowise only exists on Robinhood Chain, chain id 4663 (0x1237). A wallet on another network cannot see your nodes, and any transaction it sends goes to a different chain entirely. A payment sent on another chain does not reach the payments wallet here and cannot mint anything.

The dashboard offers to switch and, if needed, to add the network. If the prompt does not appear, add it manually with the parameters on Requirements. If your wallet already has an entry for 4663 pointing at a stale RPC, correct the URL to https://rpc.mainnet.chain.robinhood.com rather than adding a second entry.

The transaction is pending forever

A transaction that has been broadcast but not mined is usually underpriced or stuck behind an earlier one from the same address. Nonces are sequential: nothing after a stuck transaction can confirm until it does.

  1. Find it on the explorer at https://robinhoodchain.blockscout.com by pasting your address.
  2. If your wallet offers "speed up", use it. That resends the same nonce with a higher fee.
  3. Otherwise cancel it, which sends a zero-value transaction to yourself with the same nonce, then retry.

A pending payment has not left your wallet and has not created a node. A pending withdrawal has not moved any balance. Neither is lost while it waits.

The payment confirmed but no node appeared

Buying a node is a plain transfer to the payments wallet, not a contract call. A watcher reads blocks for transfers to that wallet, and once one is recorded the relayer calls mintFor and pays the gas for it. So there is always a short gap between your transfer confirming and the node existing. Work through it in this order:

  1. Confirm the transfer itself confirmed, rather than still being pending or having reverted.
  2. Confirm the amount was exactly 0.02 ETH. Anything under or over is recorded and parked for a human rather than minted, because deciding between a refund and a top-up is not something the software should guess. Send the operator the transaction hash.
  3. Confirm it went to the payments wallet the deploy flow showed you, and not to the factory contract. ETH sent straight to the factory is accepted as unattached contract funds, no node is created, and the watcher never sees it. That one needs the operator to sort out.
  4. Look for the mint on the explorer. The node is created by NodeMinted(id, owner, paymentRef, createdAt), where paymentRef is the hash of your payment transaction. That is how a node is tied back to the payment that bought it, and it is the field to search on.
  5. Read the chain directly. If this returns your id, the node exists.
cast
cast call $FACTORY "nodesOf(address)(uint256[])" $YOUR_ADDRESS \
  --rpc-url https://rpc.mainnet.chain.robinhood.com

Indexing runs behind the chain, so a node can exist for a short while before the dashboard lists it. If the chain says you own it, you own it, whatever any interface shows.

The transaction reverted

Withdrawals are your own transactions, so their errors land in your wallet. Mints are the relayer’s transaction, so those errors show up as a node that never appeared; they are listed here because the reason is worth knowing.

ErrorWhat happenedFix
NotNodeOwnerThe wallet sending the withdrawal does not own that nodeSwitch to the wallet that bought it. Check with nodesOf(address).
NothingToWithdrawThe balance is zero, either because nothing has been credited yet or because a previous withdrawAll already swept itRead nodeInfo(id). Nothing was lost; there was nothing to send.
BadInputThe destination passed to a withdrawal was the zero addressPass a real address
TransferFailedThe destination rejected the ETHWithdraw to an address that can receive plain transfers, see Destination addresses
WalletLimitThe wallet already holds 25 nodes, the per-wallet capUse another wallet, see Limits
IsPausedMinting is paused, so the relayer cannot create new nodesWait. Withdrawals are never blocked by pausing.

A revert undoes everything in the transaction except the gas. Nothing is half applied, and no balance is left in a strange state. The full list of errors is on Factory interface.

Not enough gas

Gas is paid in ETH on chain 4663, separately from the node price. Two common situations:

  • Spent everything on the node. A wallet holding exactly 0.02 ETH cannot buy one, because the transfer costs the price plus gas.
  • Cannot afford to withdraw. The withdrawal is sent by you, so you need gas even though the ETH being sent comes from the contract. It is around 55,000 gas for one node, more for a sweep across several, so keep a small balance for it. Figures are on Withdrawing.

A balance looks wrong

Read the node straight from the chain. One call returns the balance, everything ever credited and everything ever withdrawn, and those three are the only figures involved.

cast
cast call $FACTORY "nodeInfo(uint256)(address,uint64,uint256,uint256,uint256)" $NODE_ID

If the balance reads zero after a sweep, that is withdrawAll having done its job: it empties every node the wallet owns, not just the one you were looking at. Display truncates to six decimals, so very small balances can read as zero while being non-zero underneath; a withdrawal still takes the exact figure. See Balances.

Signed in, then signed out again

The session is a cookie tied to the address that signed. It ends when it expires, when you switch accounts in the wallet, or when cookies are cleared. Sign in again; nothing about your nodes or your balances depends on the session, which only decides what the dashboard will show you. Withdrawing does not use it at all.