Addresses
Every address Sitowise uses on Robinhood Chain, what each one does, which single one you ever send money to, and how to check that the one you are looking at is the real one.
A node is bought by sending a plain 0.02 ETH transfer to the payments wallet below. That is the only Sitowise address you should ever send ETH to. Sending to the factory does not buy a node: a bare transfer to it is recorded as Funded and becomes unattached contract balance, not a node and not your balance.
The chain
| Field | Value |
|---|---|
| Network | Robinhood Chain |
| Chain id | 4663 decimal, 0x1237 hex |
| RPC | https://rpc.mainnet.chain.robinhood.com |
| Explorer | https://robinhoodchain.blockscout.com |
There is no Sitowise deployment on any other network, and no testnet deployment. Anything claiming to be Sitowise elsewhere is not this project.
The contract
There is one. SitowiseFactory records nodes and holds their balances. There is no treasury contract, no voucher contract and no proxy.
withdraw. Verified on the explorer. Its interface is documented on Factory interface. Do not send ETH here to buy a node.Wallets and roles
Four wallets, kept deliberately separate so that each one can only cost what it is worth. The payments wallet is configuration. The other three are roles the contract itself enforces, so the addresses below are read from the contract, not from a config file.
maxPerWallet, and rescue contract funds that belong to no node. It cannot touch a node balance. Ownership moves only in two steps, transferOwnership then acceptOwnership. See Security model.mintFor. It creates your node and pays the gas for it. It holds gas and nothing else, so if it leaked the cost would be unauthorised mints and gas, never anyone’s balance.creditBatch, which is payable, so this is the wallet that actually sends the ETH that lands on node balances. It carries the payout float and nothing more.No role can move a node balance. withdraw and withdrawAll check the caller against the node’s own owner and against nothing else, which is why the list above has no entry that is able to pay you or to take from you.
The Uniswap v4 hook
Uniswap v4 on Robinhood Chain
These are not Sitowise contracts and nothing here interacts with them yet. They are listed because the hook will be built on them, and because the PoolManager would be the only contract permitted to call it.
| Contract | Address | Role |
|---|---|---|
| PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Holds every v4 pool and calls hooks |
| PositionManager | 0x58daec3116aae6D93017bAAea7749052E8a04fA7 | v4 liquidity positions. Confirms the manager above through poolManager() |
| CREATE2 factory | 0x4e59b44847b379578588920cA78FbF26c0B4956C | Deterministic deployer needed to hit a mined hook address |
Verifying an address
Do not trust a contract address from a message, a reply, or a search result, including this one if you can check it another way. Three checks, in increasing strength:
- Open it on the explorer. The source is verified, so you can read the exact code that is deployed.
- Ask the contract about itself. A copy with different roles or a different node count will answer differently.
- Compare against the repository. Build the contract and check that the deployed bytecode matches what you built.
cast call $FACTORY "owner()(address)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast call $FACTORY "relayer()(address)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast call $FACTORY "distributor()(address)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast call $FACTORY "maxPerWallet()(uint256)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast call $FACTORY "outstanding()(uint256)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast call $FACTORY "isSolvent()(bool)" --rpc-url https://rpc.mainnet.chain.robinhood.comThe strongest single check on the money is the last two together. outstanding is the sum of every node balance, and isSolvent() says whether the contract holds at least that much. A factory that cannot answer both is not this one. See Settlement.
There is nothing equivalent to check about the payments wallet, because it is a plain wallet with no code and no state. The check that matters there is the sale itself: your payment transaction hash appears as paymentRef in the NodeMinted log of the mint, and it can only ever appear once.
If an address changes
The contract is not upgradeable. There is no proxy and no admin key that can swap the implementation, so the factory at a given address is the code that was deployed there and stays that way. A new deployment would be a new address, announced as such, and the old one would keep working for the nodes it holds, including their withdrawals.
What can change without a redeployment are the things the owner controls: the relayer, the distributor, the per-wallet cap and the pause flag. Each emits an event when it changes, so the history is public and this page reads the current values rather than remembering the old ones. The payments wallet can also change, which is why you should take it from this page or from the deploy flow at the moment you pay rather than from a saved copy. See Events and Security model.