Pick a depth. Each prompt opens in your AI pre-loaded with the lesson. Click a row to preview the prompt.
If you can't read Etherscan fluently, you can't debug on-chain issues, audit a token's behavior, or verify a counterparty's claim. Every blockchain dev skill composes on top of 'stare at a tx hash and understand what happened'. Treat the block explorer as your first real IDE.
Take a famous transaction: the first ETH ever sent, block 46147, tx hash 0x5c504e…a7b2f1. Open it on Etherscan. You'll see: a From address (0xa1e4380a3b1f749673e270229993ee55f35663b4 — Hal Finney's test address? actually Vitalik's), a To, a Value (31337 Szabo — a nerd reference), Gas Used, Gas Price (50 gwei), Block Number (46147), Confirmations (millions). Every field has a specific on-chain meaning we'll unpack across this course.
From address. Scroll its transaction list to the first outgoing tx — that's how you trace account history.Logs (any ERC-20 transfer works — e.g. a recent USDC transfer at 0xa0b8…eb48). Open the Logs tab and count the Transfer events.Contract → Read Contract and call factory(). Note that reading is free — no wallet needed.// main.go — fetch a transaction by hash via JSON-RPC and pretty-print it
// Run: go run main.go (stdlib only)
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
const tx = "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060"
func main() {
body := []byte(`{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["` + tx + `"],"id":1}`)
resp, err := http.Post("https://cloudflare-eth.com", "application/json", bytes.NewReader(body))
if err != nil {
panic(err)
}
defer resp.Body.Close()
var out struct {
Result json.RawMessage `json:"result"`
}
json.NewDecoder(resp.Body).Decode(&out)
var pretty bytes.Buffer
json.Indent(&pretty, out.Result, "", " ")
fmt.Println(pretty.String())
}
go run main.go