Skip to main content
Please do not proceed until Monad Foundation provides notice.

Overview

UDP Authentication provides secure, authenticated peer-to-peer communication for Monad nodes. This feature is currently opt-in and will become required in a future release. Benefits:
  • Enhanced Security: Cryptographically authenticated peer connections using your existing validator keys
  • DoS Protection: Prevents resource exhaustion from spoofed packets
  • Traffic Prioritization: Enables efficient QoS policies for transaction forwarding
  • Performance: ~100x faster packet verification compared to per-packet ECDSA signatures

Prerequisites

  • Monad Version: 0.12.6 or later
  • Access: Root/sudo privileges on your node
  • Keystore: Existing /home/monad/monad-bft/config/id-secp file
  • Network: Ability to open UDP port 8001 on your firewall

Instructions for node operators

1. Verify the Monad version

Verify the installation:
If not, please refer to the official documentation to upgrade to the latest recommended version: https://docs.monad.xyz/node-ops/upgrade-instructions/.

2. Configure Firewall

Open UDP port 8001 for authenticated traffic:
Verify the rule was added:
Expected output:
Note: if the node is behind a Network Firewall, make sure to also open the port 8001.

3. Generate Authentication Signature

Generate your node’s authenticated name record signature:
Important: The --self-record-seq-num value must be greater than your current self_record_seq_num in node.toml.
  • If your config shows self_record_seq_num = 0, use 1
  • If your config shows self_record_seq_num = 1, use 2
Example Output:
Warning: do not copy the authenticated_udp_port parameter, as the parameter name in node.toml is self_auth_port. Save this output - you’ll need it in the next step.

4. Update Configuration

Edit your Monad configuration:

4.1 Update Peer Discovery Section

In the node configuration:
  • replace the values in the [peer_discovery] section with your output from Step 3
  • add the self_auth_port parameter

4.2 Update Network Section

Add the authenticated_bind_address_port parameter to [network]:

4.3 Update Peer Records (Validators Only)

If you operate a validator with downstream full nodes, update peer configurations as they enable UDP authentication. For peers that have enabled UDP authentication:
  • update record_seq_num and name_record_sig using the new values of the downstream node
  • set the auth_port = 8001
Note: Authenticated UDP activated nodes would appear in the peers.toml file with auth_port = 8001.
For peers not yet enabled, nothing needs to be updated, auth_port line should be omited:
Note: the downstream nodes peering configuration do not need to be updated. Save and exit the file.

5. Restart and Verify

Restart the Monad service:
Monitor the logs for successful startup:

Verification

Check Service Status

Expected: active (running)

Verify Port Binding

Expected output:

Troubleshooting


Issue: “invalid name record signature in config file”

Cause: The signature in node.toml doesn’t match the parameters. Solution:
  1. Verify you incremented self_record_seq_num correctly
  2. Re-run monad-sign-name-record with the correct seq_num
  3. Copy the new signature to node.toml
  4. Restart the service

Issue: Port 8001 Not Listening

Solution:

Issue: Firewall Blocking Connections

Solution:

Rollback Instructions

To disable UDP authentication if needed:

1. Generate New Signature Without Auth Port

Note: Increment the seq_num from your current value.

2. Update Configuration

Edit /home/monad/monad-bft/config/node.toml:
  • Update self_record_seq_num and self_name_record_sig in [peer_discovery]
  • Remove or comment out authenticated_bind_address_port in [network]
  • Remove all auth_port entries from peer configurations

3. Restart Service


Quick Health Check Script

Save this as check_udp_auth.sh for quick verification:
Make it executable:
Expected output:

Additional Notes

  • Backward Compatibility: Nodes can communicate with both authenticated and non-authenticated peers
  • Gradual Rollout: You can enable authentication at your own pace during the opt-in period
  • Future Requirement: UDP authentication will become mandatory in a future release (date TBD)
  • Sequence Numbers: Always increment self_record_seq_num when regenerating signatures
  • Key Reuse: Authentication uses your existing validator keys (secp256k1)

Support

If you encounter issues not covered in this guide:
  1. Check logs: journalctl -u monad-bft -n 500 --no-pager
  2. Verify all configuration parameters match the examples
  3. Ensure your firewall and network policies allow UDP/8001
  4. Contact Monad support with your logs and configuration (sanitized of sensitive data)