All examples use Foundry cast. Install the Tempo fork for full feature support:
foundryup -n tempoStandard Foundry works for basic queries and transfers. The Tempo fork adds
batch-send,--tempo.fee-token, expiring nonces, and fee sponsorship.
| Service | URL |
|---|---|
| RPC (load-balanced) | http://localhost (Traefik, port 80) |
| RPC (direct rpc-0) | http://localhost:8545 |
| Faucet | http://localhost:8546 |
export RPC=http://localhost:8545
export FAUCET=http://localhost:8546
export PATHUSD=0x20c0000000000000000000000000000000000000cast wallet new # → Alice
cast wallet new # → Bobexport ALICE=0x...
export ALICE_PK=0x...
export BOB=0x...The faucet mints pathUSD (6 decimals) to any address:
cast rpc tempo_fundAddress $ALICE --rpc-url $FAUCETOr with curl:
curl -s -X POST $FAUCET \
-H "Content-Type: application/json" \
-d "{\"jsonrpc\":\"2.0\",\"method\":\"tempo_fundAddress\",\"params\":[\"$ALICE\"],\"id\":1}"On Tempo there is no native gas token — eth_getBalance returns a sentinel value. Read real balances via the TIP-20 contract:
cast call $PATHUSD "balanceOf(address)(uint256)" $ALICE --rpc-url $RPCTransfer 1 pathUSD (= 1,000,000 units at 6 decimals):
cast send $PATHUSD \
"transfer(address,uint256)" $BOB 1000000 \
--rpc-url $RPC --private-key $ALICE_PKFees are paid in pathUSD automatically.
Attach a 32-byte memo for reconciliation:
MEMO=$(cast --format-bytes32-string "INV-001")
cast send $PATHUSD \
"transferWithMemo(address,uint256,bytes32)" $BOB 500000 "$MEMO" \
--rpc-url $RPC --private-key $ALICE_PKEmits both Transfer and TransferWithMemo events.
Requires the Tempo Foundry fork.
Send multiple calls in a single atomic transaction:
cast batch-send \
--call "$PATHUSD::transfer(address,uint256):$BOB,100000" \
--call "$PATHUSD::transfer(address,uint256):$BOB,200000" \
--rpc-url $RPC --private-key $ALICE_PKAll calls succeed or all revert together. One signature, lower gas.
cast block-number --rpc-url $RPC # current height
cast chain-id --rpc-url $RPC # 1337 local, 42431 testnet moderato
cast block latest --rpc-url $RPC # latest block details
cast call $PATHUSD "name()(string)" --rpc-url $RPC # "pathUSD"
cast call $PATHUSD "decimals()(uint8)" --rpc-url $RPC # 6
cast call $PATHUSD "totalSupply()(uint256)" --rpc-url $RPCcast receipt <TX_HASH> --rpc-url $RPCTempo-specific receipt fields:
| Field | Description |
|---|---|
feeToken |
TIP-20 token that paid the fee |
feePayer |
Address that paid the fee (can differ from from with sponsorship) |
| Token | Address | Decimals | Availability |
|---|---|---|---|
| pathUSD | 0x20c0...0000 |
6 | local + testnet |
Other tokens are available on the official testnet
These require foundryup -n tempo:
- Dashboards — monitor the chain in Grafana
- Payment lanes spec
- Fee sponsorship guide
- Stablecoin DEX guide
- TypeScript / Rust / Go SDKs
- Tempo Foundry fork