Other events published by Mostro

Each Mostro instance publishes several types of events to Nostr relays. These include identity metadata, instance status, relay lists, and development fee records. Below, we provide details on each of these events.

Node Identity (NIP-01 Kind 0)

Each Mostro instance publishes a NIP-01 kind 0 metadata event on startup so that Nostr clients can display the node's profile information. This is the standard Nostr profile mechanism — every relay-aware client already knows how to fetch and display kind 0 metadata.

The event is a replaceable event, meaning relays keep only the latest version. It is re-published on every restart, ensuring the profile stays fresh.

The content field contains a stringified JSON object with the following optional fields:

{
  "name": "Mostro P2P",
  "about": "A peer-to-peer Bitcoin trading daemon over the Lightning Network",
  "picture": "https://example.com/mostro-avatar.png",
  "website": "https://mostro.network"
}

The full event looks like this:

[
  "EVENT",
  "RAND",
  {
    "id": "<Event id>",
    "pubkey": "<Mostro's pubkey>",
    "kind": 0,
    "tags": [],
    "content": "{\"name\":\"Mostro P2P\",\"about\":\"A peer-to-peer Bitcoin trading daemon over the Lightning Network\",\"picture\":\"https://example.com/mostro-avatar.png\",\"website\":\"https://mostro.network\"}",
    "sig": "<Mostro's signature>",
    "created_at": 1731701441
  }
]

Fields

  • name: Human-readable name for the Mostro instance (e.g., "LatAm Mostro", "Bitcoin Munich Exchange").
  • about: Short description of the instance and the community it serves.
  • picture: URL to an avatar image. Recommended: square, max 128×128 pixels, PNG or JPEG.
  • website: Operator's website URL.

All fields are optional. If no metadata fields are configured, no kind 0 event is published. These fields are configured in the [mostro] section of settings.toml:

[mostro]
name = "Mostro P2P"
about = "A peer-to-peer Bitcoin trading daemon over the Lightning Network"
picture = "https://example.com/mostro-avatar.png"
website = "https://mostro.network"

This allows clients like Mostro Mobile to display meaningful information about each Mostro instance — its name, description, avatar, and website — so users know which node they are trading on.

Mostro Instance Status

Each Mostro instance periodically publishes events with relevant information about its status, such as the code version it is using, the latest commit, the fees it charges, allowed exchange limits, the relays it publishes to, and much more. Below, we provide details on these events.

Mostro Instance Status

This event contains specific data about a Mostro instance. The instance is identified by the d label.

[
  "EVENT",
  "RAND",
  {
    "id": "<Event id>",
    "pubkey": "<Mostro's pubkey>",
    "kind": 38385,
    "tags": [
      [
        "d",
        "<Mostro's pubkey>"
      ],
      [
        "mostro_version",
        "0.12.8"
      ],
      [
        "mostro_commit_hash",
        "1aac442058720c05954850bcffca6bcdfc87d150"
      ],
      [
        "max_order_amount",
        "1000000"
      ],
      [
        "min_order_amount",
        "100"
      ],
      [
        "expiration_hours",
        "1"
      ],
      [
        "expiration_seconds",
        "900"
      ],
      [
        "fiat_currencies_accepted",
        "USD,EUR,ARS,CUP,VES"
      ],
      [
        "max_orders_per_response",
        "10"
      ],
      [
        "fee",
        "0.006"
      ],
      [
        "pow",
        "0"
      ],
      [
        "protocol_version",
        "1"
      ],
      [
        "hold_invoice_expiration_window",
        "120"
      ],
      [
        "hold_invoice_cltv_delta",
        "144"
      ],
      [
        "invoice_expiration_window",
        "120"
      ],
      [
        "lnd_version",
        "0.18.4-beta commit=v0.18.4-beta"
      ],
      [
        "lnd_node_pubkey",
        "0220e4558a8d9af4988ef6c8def0e73b05403819e49b7fb2db79d322ac3be1547e"
      ],
      [
        "lnd_commit_hash",
        "ddeb8351684a611f6c27f16f09be75d5c039f08c"
      ],
      [
        "lnd_node_alias",
        "alice"
      ],
      [
        "lnd_chains",
        "bitcoin"
      ],
      [
        "lnd_networks",
        "regtest"
      ],
      [
        "lnd_uris",
        "0220e4558a8d9af4988ef6c8def0e73b05403819e49b7fb2db79d322ac3be1547e@172.26.0.2:9735"
      ],
      [
        "bond_enabled",
        "true"
      ],
      [
        "bond_apply_to",
        "take"
      ],
      [
        "bond_slash_on_waiting_timeout",
        "false"
      ],
      [
        "bond_amount_pct",
        "0.01"
      ],
      [
        "bond_base_amount_sats",
        "1000"
      ],
      [
        "bond_slash_node_share_pct",
        "0.5"
      ],
      [
        "bond_payout_claim_window_days",
        "15"
      ],
      [
        "y",
        "mostro",
        "[Mostro instance name]"
      ],
      [
        "z",
        "info"
      ]
    ],
    "content": "",
    "sig": "<Mostro's signature>",
    "created_at": 1731701441
  }
]

Below is an explanation of the meaning of some of the labels in this event, all of which can be modified by anyone running a Mostro instance.

  • mostro_version: The version of the Mostro daemon running on the instance.
  • mostro_commit_hash: The ID of the last commit used by the instance.
  • max_order_amount: The maximum amount of Satoshis allowed for exchange.
  • min_order_amount: The minimum amount of Satoshis allowed for exchange.
  • expiration_hours: The maximum time, in hours, that an order can remain in pending status before it expires.
  • expiration_seconds: The maximum time, in seconds, that an order can remain in waiting-payment or waiting-buyer-invoice status before being canceled or reverted to pending status.
  • fiat_currencies_accepted: Fiat currencies accepted by the Mostro. If no currency is specified, all are accepted.
  • max_orders_per_response: Maximum complete orders data per response in orders action.
  • fee: The fee percentage charged by the instance. For example, "0.006" means a 0.6% fee.
  • pow: The Proof of Work required of incoming events.
  • protocol_version: The Mostro protocol (wire transport) this node speaks — "1" for NIP-59 gift wrap (kind 1059, DEPRECATED) or "2" for NIP-44 direct messages (kind 14). A node speaks exactly one; clients read this tag to pick the matching wire format. See the client migration guide.
  • hold_invoice_expiration_window: The maximum time, in seconds, for the hold invoice issued by Mostro to be paid by the seller.
  • hold_invoice_cltv_delta: The number of blocks in which the Mostro hold invoice will expire.
  • invoice_expiration_window: The maximum time, in seconds, for a buyer to submit an invoice to Mostro.
  • lnd_version: The version of the LND daemon running on the instance.
  • lnd_node_pubkey: The pubkey of the LND node running on the instance.
  • lnd_commit_hash: The ID of the last commit used by the LND node.
  • lnd_node_alias: The alias of the LND node.
  • lnd_chains: The chains supported by the LND node.
  • lnd_networks: The networks supported by the LND node.
  • lnd_uris: The URIs of the LND node.
  • y: Platform identifier tag values. Mostro publishes "mostro" and MAY include a second value with the Mostro instance name from settings.
  • z: The type of event.

Anti-abuse bond policy tags

These tags advertise the node's anti-abuse-bond configuration so clients can show users — before they enter a trade — whether a bond is required, how much it will cost, and under what conditions it can be slashed. bond_enabled is always emitted on daemons that support the feature; the remaining six tags are present only when bond_enabled = "true".

  • bond_enabled: "true" if the node enforces an anti-abuse bond on at least one trade side, otherwise "false".
  • bond_apply_to: which side must lock a bond — "take", "make", or "both".
  • bond_slash_on_waiting_timeout: "true" if a bonded user's bond is slashed when a waiting-state timeout elapses, "false" if such timeouts only release the bond.
  • bond_amount_pct: bond size as a fraction of the trade amount (e.g. "0.01" = 1%). The actual bond is max(bond_amount_pct × order_amount_sats, bond_base_amount_sats).
  • bond_base_amount_sats: minimum bond size in satoshis. Floor applied to bond_amount_pct × order_amount_sats so small trades still carry a non-trivial bond.
  • bond_slash_node_share_pct: fraction of a slashed bond the node retains. The remainder is paid out to the winning counterparty as a Lightning payment. Always within [0.0, 1.0].
  • bond_payout_claim_window_days: number of days the winning counterparty has, from the slash moment, to submit a Lightning invoice for their share of a slashed bond. After this window the share is forfeited to the node. Clients use this together with the slashed_at field carried on add-bond-invoice messages (see Bond payout invoice) to render the forfeit deadline locally.

Disambiguation. When bond_enabled is absent from the event, the daemon predates the bond feature; treat the node as not enforcing bonds. When bond_enabled = "false", the daemon supports the feature but the operator has not enabled it on this instance. When bond_enabled = "true", the remaining six bond tags are present and clients should expect bond messages on this node — pay-bond-invoice for the bonded user and add-bond-invoice for the payout recipient on a slashed trade.

Information about the Relays Where Events Are Published

The operator of a Mostro instance decides which relays the events from that instance are published to. This information can be accessed in events kind 10002, which are published by the Mostro instances.

[
  "EVENT",
  "RAND",
  {
    "id": "<Event id>",
    "kind": 10002,
    "tags": [
      ["r", "wss://relay.mostro.network/"],
      ["r", "wss://nos.lol/"]
    ],
    "content": "",
    "sig": "<Mostro's signature>",
    "pubkey": "<Mostro's pubkey>",
    "created_at": 1731680102
  }
]

The r label indicates the relays through which the Mostro instance is publishing its events.

Exchange Rates

Each Mostro instance publish Bitcoin/fiat exchange rates to Nostr relays as addressable events (kind 30078):

Event Structure

[
  "EVENT",
  "RAND",
  {
    "id": "<Event id>",
    "pubkey": "<Mostro's pubkey>",
    "kind": 30078,
    "tags": [
      ["d", "mostro-rates"],
      ["published_at", "1732546800"],
      ["source", "yadio"],
      ["expiration", "1732550400"]
    ],
    "content": "{\"BTC\": {\"USD\": 50000.0, \"EUR\": 45000.0, \"VES\": 850000000.0, \"ARS\": 105000000.0, ...}}",
    "sig": "<Mostro's signature>",
    "created_at": 1732546800
  }
]

Tags

  • d: "mostro-rates" — NIP-01 identifier that makes this event replaceable. Each new rate update replaces the previous one.
  • published_at: Unix timestamp when the daemon published the event (daemon time, not source timestamp).
  • source: Rate source identifier (e.g., "yadio").
  • expiration: Unix timestamp for event expiration (NIP-40). Prevents stale rates from being served.

Content Format

The content field contains the full rate response in JSON format matching the source API structure (Yadio format):

{
  "BTC": {
    "BTC": 1,
    "USD": 50000.0,
    "EUR": 45000.0,
    "VES": 850000000.0,
    "ARS": 105000000.0,
    "AED": 260491.35,
    "..."
  }
}

Rate semantics: Each value under "BTC" represents the price of 1 BTC in that currency.

Development Fee

The development fee mechanism provides sustainable funding for Mostro development by automatically sending a configurable percentage of the Mostro fee to a lightning address on each successful order, this a regular event with kind 8383 which is expected to be stored by relays.

[
  "EVENT",
  "RAND",
  {
    "id": "<Event id>",
    "tags": [
      [
        "order-id",
        "<Order id>"
      ],
      [
        "amount",
        "8" // sats amount
      ],
      [
        "hash",
        "ca2f47b7c2169b8c42ef135e8ee32706e1fd3722b65e5a16f21ce675d2affb6b"
      ],
      [
        "destination",
        "dev@mostro.network"
      ],
      [
        "network",
        "mainnet"
      ],
      [
        "y",
        "mostro",
        "[Mostro instance name]"
      ],
      [
        "z",
        "dev-fee-payment"
      ]
    ],
    "content": "",
    "sig": "<Mostro's signature>",
    "pubkey": "<Mostro's pubkey>",
    "created_at": 1768256716,
    "kind": 8383
  }
]