Custom P2P Messaging

Empower your AVSs with flexible P2P messaging capabilities.

Overview

This enhancement introduces the ability to send custom P2P messages over the AVS network. It enables operators to publish arbitrary data as P2P messages and ensures seamless handling across all nodes in the network.


Implementation Details

New Topic: othentic.p2p.custom_message

  • The new P2P topic othentic.p2p.custom_message is introduced to handle custom messages.

  • All nodes subscribe to this topic by default.

New JSON-RPC Method: sendCustomMessage

Note: If the operator starts without the --json-rpc option, the custom messaging feature will not be available as the JSON-RPC Service will not be enabled.

  • Handler: Implemented in the JSON-RPC server.

  • Functionality:

    • Accepts raw data in bytes format.

    • Publishes the provided data to the othentic.p2p.custom_message topic.

Node Configuration

  • New Startup Option:

    • --json-rpc.custom-message-enabled

    • When enabled, it activates the sendCustomMessage RPC method.

Validation Service Integration

  • Endpoint: /p2p/message

  • Purpose: Receives and processes custom messages from the P2P network.

  • Behavior: Operator sends an HTTP POST request to this endpoint whenever a message is received on the othentic.p2p.custom_message topic.


Example Usage

Enabling Custom Message Support

To enable the custom P2P messaging feature, start the aggregator or attester node with the following option:

othentic-cli node aggregator \
    --json-rpc \
    --json-rpc.custom-message-enabled
othentic-cli node attester \
    /ip4/127.0.0.1/tcp/9876/p2p/<BOOTSTRAP_NODE_ID> \
    --json-rpc \
    --json-rpc.custom-message-enabled

Sending a Custom P2P Message

  1. Use the new JSON-RPC method sendCustomMessage to send custom messages:

    Request Example:

    {
      "jsonrpc": "2.0",
      "method": "sendCustomMessage",
      "params": ["0x746573744d657373616765"], // Raw data in bytes
      "id": 1
    }
  2. The message will be published to the othentic.p2p.custom_message topic.

Handling Incoming Messages

  1. All nodes listen to the othentic.p2p.custom_message topic.

  2. When a message is received:

    • It is forwarded to the Validation Service via an HTTP POST request:

    POST Request Example:

    POST /p2p/message
    Content-Type: application/json
    
    {
      "data": "0x746573744d657373616765"
    }

Concerns and Mitigation Strategies

Potential for Spam and DDoS Attacks

Since this feature allows sending arbitrary custom messages, malicious actors could exploit it to spam the P2P network with excessive messages, potentially leading to a Distributed Denial-of-Service (DDoS) scenario.

Recommendations:

  • Rate Limiting: Introduce rate limits for the sendCustomMessage method to reduce the risk of abuse.

  • Monitoring and Alerts: Implement monitoring to detect unusual activity patterns and respond to potential threats.

Unvalidated Raw Bytes

The custom messages are published as raw bytes without any validation or schema enforcement. This lack of validation poses a risk if the messages contain malformed or malicious content.

Recommendations:

  • Validation Responsibility: The AVS developers must implement robust validation and sanitization logic in the Validation Service to handle incoming messages from the /p2p/message endpoint.

  • Error Handling: Ensure that the Validation Service handles invalid or unexpected message content gracefully without affecting its stability.


Last updated