Learn by inspecting the chain.
Three short paths through client connection, operational state, and transaction evidence. Each starts with a read and ends with a check you can explain.
01 / Connect a network-aware client
Choose a configured endpoint. Call sigil_getNodeInfo and compare result.chain_id with the expected chain ID. Call sigil_getNetworkActivationStatus and display the actual response, including unavailable or pre-activation states.
curl --fail-with-body --show-error --silent --max-time 15 'https://rpc.sigil.ml/rpc' \
-H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"sigil_getNodeInfo","params":{}}'02 / Build a truthful status view
Read synchronization and a small block window from the same endpoint. Keep request timestamps and failures separate from values. A node reporting its own stored height does not by itself establish peer agreement or feature activation.
curl --fail-with-body --show-error --silent --max-time 15 'https://rpc.sigil.ml/rpc' \
-H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"sigil_getSyncStatus","params":{}}'03 / Follow an existing transaction
Start with a transaction hash from the chosen network. Read sigil_getTransactionReceipt with the hash field. Keep the receipt status, containing block height, and transaction index together in your UI. Do not turn an RPC error into a completed record.
curl --fail-with-body --show-error --silent --max-time 15 'https://rpc.sigil.ml/rpc' \
-H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"sigil_getTransactionReceipt","params":{"hash":"YOUR_TRANSACTION_HASH"}}'