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 inpendingstatus before it expires.expiration_seconds: The maximum time, in seconds, that an order can remain inwaiting-paymentorwaiting-buyer-invoicestatus before being canceled or reverted topendingstatus.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 (kind1059, DEPRECATED) or"2"for NIP-44 direct messages (kind14). 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 ismax(bond_amount_pct × order_amount_sats, bond_base_amount_sats).bond_base_amount_sats: minimum bond size in satoshis. Floor applied tobond_amount_pct × order_amount_satsso 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 theslashed_atfield carried onadd-bond-invoicemessages (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
}
]