Join the public testnet
Install a current modal binary, create a joiner with a new key, and mine
(or observe) against the public hybrid testnet.
Bootstrap nodes are Foundation-operated. Anyone may join by mining. This is not mainnet. Testnet block subsidy is a small development mint, not the mainnet 21M schedule.
If modal node ping to a published bootstrapper times out, the testnet is not
currently joinable. Check the description on the bundled testnet network
(modal net info testnet) before treating it as live. Public names:
- Status:
https://testnet.modality.network - Bootstrappers:
node1.testnet.modality.network,node2.testnet.modality.network,node3.testnet.modality.network(TCP 4040/ws)
Those names replace the old *.testnet.modal.money hosts. Packages still
install from get.modality.org.
Install
curl -fsSL https://get.modality.org/testnet/latest/install.sh | sh
Use a build that includes node commands (modal node). A language-only
modality CLI on PATH is not enough.
Create a joiner
modal node create --dir ./my-node --testnet
--testnet writes:
network_config_path:modality-networks://testnetlisteners:/ip4/0.0.0.0/tcp/4040/wshybrid_consensus: true- bootstrappers from the bundled testnet list
- autoupgrade from
https://get.modality.org(branchtestnet)
Do not use --from-template testnet/node1 (or node2 / node3) as a joiner.
Those identities are the Foundation bootstrap nodes.
Open TCP 4040 if you want other peers to dial you.
Run
modal node run-miner --dir ./my-node --no-tui
# or, miner + sequencer in one process:
modal node run-hybrid --dir ./my-node --no-tui
Ping a bootstrapper from a second node directory (same-dir ping opens the live datastore):
modal node ping --dir ./ping-node --target /dns4/node1.testnet.modality.network/tcp/4040/ws/p2p/<peer-id>
Post a contract
After sequencers are running (hybrid nominates sequencers from mining epoch N−2, so sequencing starts at epoch 2):
modal contract create --dir ./my-contract
modal checkout --dir ./my-contract
modal commit --path /data/message.text --value hello --dir ./my-contract --message hello
modal contract push --dir ./my-contract --remote /dns4/node1.testnet.modality.network/tcp/4040/ws/p2p/<peer-id>
Paths must be typed (/data/message.text). Push with --remote <multiaddr>.
See Node Commands for create, run-miner, run-hybrid,
and ping.