This document contains the complete, machine-readable documentation for all Nostr event kinds used in the Lana Ecosystem. It is designed for AI systems, developers, and automated tools to understand and implement Lana protocols.
The Lana System Parameters event defines the global configuration for the Lana Ecosystem. It serves as the single source of truth for:
All Lana applications (Lovable, SafeLana, LanaRegister, LanaPays, etc.) must synchronize using this event.
| Field | Value |
|---|---|
| Kind | 38888 |
| Type | Parameterized Replaceable (NIP-33) |
| Parameter Tag | ["d","main"] |
| Authorized Publisher | 9eb71bf1e9c3189c78800e4c3831c1c1a93ab43b61118818c32e4490891a35b3 |
| Validation | Accept only events signed by this pubkey and matching d=main |
| Replace Behavior | Relay keeps only the latest version per (pubkey + kind + d) |
9eb71bf1e9c3189c78800e4c3831c1c1a93ab43b61118818c32e4490891a35b3 is authorized to publish official Lana System Parameters. Clients MUST verify this pubkey and ignore all others.
Certain Lana ecosystem functions have their own sets of trusted public keys used by clients and relays to verify authenticity of specialized events.
"trusted_signers": {
"Lana8Wonder": ["<nostr_hex_pubkey_1>", "<nostr_hex_pubkey_2>"],
"LanaRegistrar": ["<nostr_hex_pubkey_1>"],
"LanaRooms": [],
"LanaAlignment": ["<nostr_hex_pubkey_1>", "<nostr_hex_pubkey_2>"],
"LanaPaysUs": ["<nostr_hex_pubkey_1>"],
"100MillionFun": [],
"LanaKnights": [],
"LanaHelpsUs": [],
"LanaSelfResponsibility": [],
"UnconditionalPayments": []
}
Rules:
| Tag | Example | Description |
|---|---|---|
["d","main"] | — | Parameter key for replaceable slot (main config) |
["relay","<url>"] | wss://relay.lanavault.space | Official relay endpoints |
["electrum","<host>","<port>"] | electrum1.lanacoin.com, 5097 | Active Lana Electrum servers |
["fx","<currency>","<rate>"] | "EUR","0.004" | Exchange rate for 1 LANA |
["split","<n>"] | "3" | Current global split round |
["split_target_lana","<amount>"] | "2000000" | MANDATORY — Target amount of LANA for the current Split round |
["split_started_at","<unix>"] | 1735689600 | Unix timestamp when the current Split started |
["split_ends_at","<unix>"] | 1738368000 | Unix timestamp when the current Split is scheduled to end |
["version","<n>"] | "3" | Sequential version number |
["valid_from","<unix>"] | 1738976400 | Start of validity |
["comment","<text>"] | Free text | Optional metadata |
{
"kind": 38888,
"content": {
"description": "Lana System Parameters v3 — Official configuration for all Lana applications.",
"relays": [
"wss://relay.lanavault.space",
"wss://relay.lanacoin-eternity.com",
"wss://relay.lanaheartvoice.com"
],
"electrum": [
{"host": "electrum1.lanacoin.com", "port": "5097"},
{"host": "electrum2.lanacoin.com", "port": "5097"}
],
"fx": {
"EUR": 0.004,
"USD": 0.004,
"GBP": 0.004
},
"split": "3",
"split_target_lana": 2000000,
"split_started_at": "1735689600",
"split_ends_at": "1738368000",
"version": "3",
"valid_from": "1738976400",
"trusted_signers": {
"Lana8Wonder": ["a56253e6232b2ab5a96b60d233434d4f759ba4c858a3cc0f4ec51906dce73ae6"],
"LanaRegistrar": ["d91c5d4a1c0f0f6c5a7bc8b27a19e8e2fb1f9d1a0d9e2a5f8f5d92a18c1f8831"],
"LanaRooms": [],
"LanaAlignment": ["3ec147aa1f7b3eac12c018091cbcd2eadae0c4f8b92239ad5c92706f8a9913b5"],
"LanaPaysUs": ["e4f8a2b9c3d7e1f6a5b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"],
"100MillionFun": [],
"LanaKnights": [],
"LanaHelpsUs": [],
"LanaSelfResponsibility": [],
"UnconditionalPayments": []
}
},
"tags": [
["d", "main"],
["relay", "wss://relay.lanavault.space"],
["relay", "wss://relay.lanacoin-eternity.com"],
["relay", "wss://relay.lanaheartvoice.com"],
["electrum", "electrum1.lanacoin.com", "5097"],
["electrum", "electrum2.lanacoin.com", "5097"],
["fx", "EUR", "0.004"],
["fx", "USD", "0.004"],
["fx", "GBP", "0.004"],
["split", "3"],
["split_target_lana", "2000000"],
["split_started_at", "1735689600"],
["split_ends_at", "1738368000"],
["version", "3"],
["valid_from", "1738976400"],
["comment", "Official configuration maintained by Lana Core Authority"]
],
"pubkey": "9eb71bf1e9c3189c78800e4c3831c1c1a93ab43b61118818c32e4490891a35b3",
"created_at": 1738998000,
"id": "<autogenerated_by_client>",
"sig": "<autogenerated_by_client>"
}
const filter = {
kinds: [38888],
authors: ["9eb71bf1e9c3189c78800e4c3831c1c1a93ab43b61118818c32e4490891a35b3"],
"#d": ["main"],
limit: 1
};
const event = getLatestEvent(filter);
const relays = event.tags.filter(t => t[0] === "relay").map(t => t[1]);
const electrum = event.tags
.filter(t => t[0] === "electrum")
.map(t => ({ host: t[1], port: t[2] }));
const fx = Object.fromEntries(
event.tags.filter(t => t[0] === "fx").map(t => [t[1], parseFloat(t[2])])
);
const split = event.tags.find(t => t[0] === "split")?.[1];
const splitTargetLana = event.tags.find(t => t[0] === "split_target_lana")?.[1];
const splitStartedAt = event.tags.find(t => t[0] === "split_started_at")?.[1];
const splitEndsAt = event.tags.find(t => t[0] === "split_ends_at")?.[1];
KIND 88888 defines the canonical event format for publishing official annuity plans within the Lana8Wonder system.
Each plan represents one subject (identified by a Nostr HEX ID) and contains 8 accounts, describing how LANA tokens are released at specific price levels.
The latest event with the same plan ID automatically replaces older ones. Only the main publisher may create or update these events.
| Property | Description |
|---|---|
| Kind | 88888 |
| Replace rule | The newest event with the same ["d","plan:<subject_hex>"] replaces all earlier versions (relay-side rule, NIP-33-style). |
| Policy tag | ["policy","v2"] |
| Schema version | ["schema","1.2.1"] |
| Field | Description |
|---|---|
| Main Publisher HEX ID | a56253e6232b2ab5a96b60d233434d4f759ba4c858a3cc0f4ec51906dce73ae6 |
| Tag | ["mpub","a56253e6…73ae6"] |
| Rule | Only events signed by this pubkey are valid official Lana8Wonder plans. |
| Optional | NIP-26 delegation from the subject → publisher for extra audit proof. |
| Tag | Meaning |
|---|---|
["d","plan:<subject_hex>"] | Stable plan ID for this subject. |
["p","<subject_hex>"] | HEX ID of the subject (person). |
["mpub","a56253e6…73ae6"] | Declares the main publisher. |
["coin","LANA"] | Blockchain asset symbol. |
["currency","EUR"] | Reference fiat currency. |
["policy","v2"] | Policy version marker. |
["schema","1.2.1"] | Schema revision. |
["acct","1","AC1_WALLET"] … ["acct","8","AC8_WALLET"] | Account-to-wallet mappings (eight total). |
Each plan always includes 8 accounts:
{
"subject_hex": "<subject_pubkey_hex>",
"plan_id": "plan:<subject_hex>",
"coin": "LANA",
"currency": "EUR",
"policy": "v2",
"accounts": [
{
"account_id": 1,
"wallet": "AC1_WALLET",
"levels": [
{
"row_id": "uuid-or-hash",
"level_no": 1,
"trigger_price": 0.075,
"coins_to_give": 1110.5366,
"cash_out": 86.62,
"remaining_lanas": 4442.1464
}
]
}
]
}
{
"kind": 88888,
"created_at": 1723887600,
"tags": [
["d","plan:SUBJECT_HEX"],
["p","SUBJECT_HEX"],
["mpub","a56253e6232b2ab5a96b60d233434d4f759ba4c858a3cc0f4ec51906dce73ae6"],
["coin","LANA"],
["currency","EUR"],
["policy","v2"],
["schema","1.2.1"],
["acct","1","AC1_WALLET"],
["acct","2","AC2_WALLET"],
["acct","3","AC3_WALLET"],
["acct","4","AC4_WALLET"],
["acct","5","AC5_WALLET"],
["acct","6","AC6_WALLET"],
["acct","7","AC7_WALLET"],
["acct","8","AC8_WALLET"]
],
"content": "{\\"subject_hex\\":\\"SUBJECT_HEX\\",\\"plan_id\\":\\"plan:SUBJECT_HEX\\",\\"coin\\":\\"LANA\\",\\"currency\\":\\"EUR\\",\\"policy\\":\\"v2\\",\\"accounts\\":[...]}"
}
The Lana Registrar Protocol defines event kinds used within the LanaCoin Registrar system. These kinds standardize communication between users, registrars, providers, and relays for wallet registration, monitoring, compliance, and synchronization.
Purpose: Represents a new wallet registration request initiated by a user.
| Tag | Description |
|---|---|
| WalletID | Unique identifier of the wallet |
| coin | Always LanaCoin |
| WalletType | e.g., MainWallet |
| EntryPoint | Source of registration (e.g., LanaLovesUK) |
| Action | Always NewWallet |
Subscribers: Registrars, providers | Publishers: Anyone (new user)
Purpose: Registrar verifies a wallet and approves/rejects it.
| Tag | Description |
|---|---|
| WalletID | Wallet being registered |
| Linked_event | Event ID from Kind 87001 or 87005 |
| Status | activated / rejected / temp_revoked / revoked |
| LastBlock | Blockchain height when check was performed |
| Content | Optional human-readable explanation |
Subscribers: Users, providers | Publishers: Registrars only
Purpose: Registrar marks user wallets containing unregistered LANAs.
| Tag | Required | Description |
|---|---|---|
| p | REQUIRED | NOSTR hex ID of user (wallet owner) |
| WalletID | REQUIRED | Wallet with unregistered LANAs |
| TX | OPTIONAL | LanaCoin transaction ID causing the issue |
| Linked_event | OPTIONAL | Reference to related event |
| UnregistratedAmountLatoshis | REQUIRED | Amount in latoshis (1 LANA = 100,000,000 latoshis) |
Publishers: Registrar only
Purpose: Registrar monitors user wallets exceeding maximum allowed balance.
| Tag | Description |
|---|---|
| NostrID | User's identity (HEX pubkey) |
| Wallets | List of wallets under this ID |
| Linked_events | References to relevant 87001/87002 events |
| TotalBalance | Current total balance |
| MaxAllowedBalance | Threshold defined by registrar rules |
| DeadlineToReduceBalance | Date/time by which user must comply |
Purpose: New coins are introduced into the system and linked to a wallet.
| Tag | Description |
|---|---|
| WalletID | Target wallet identifier |
| coin | Always LanaCoin |
| Amount | Number of new coins |
| Agreement | Terms of registration (contract ID or text) |
| Split_ID | Reference to coin-splitting process (if applicable) |
| Registrar | Registrar pubkey (HEX format) |
Purpose: Registrar confirms or denies new coin registration.
| Tag | Description |
|---|---|
| WalletID | Target wallet identifier |
| Status | accepted / denied |
| BlockAtConfirmation | Blockchain height at decision time |
| Event_link | Reference to related event |
Purpose: Registrars accept or revoke recognition of each other's IDs.
| Tag | Description |
|---|---|
| RegistrarID | Nostr pubkey of registrar (HEX format) |
| Status | accepted / revoked |
Purpose: Registrars publish system-wide snapshots for audit and synchronization.
| Tag | Description |
|---|---|
| Balance | Current total registered balance |
| Wallets_Number | Number of registered wallets |
| UnregisteredAmount | Amount of LanaCoins still unregistered |
| Block | Blockchain height when snapshot was taken |
Purpose: Published when a Registrar verifies that a user has returned previously unregistered LANA.
| Tag | Required | Description |
|---|---|---|
| p | REQUIRED | NOSTR hex pubkey of user who returned LANA |
| e | REQUIRED | Reference to original Kind 87003 monitoring alert |
| from_wallet | REQUIRED | Wallet from which user returned the LANA |
| to_wallet | REQUIRED | Wallet to which returned LANA were sent |
| tx | REQUIRED | Blockchain transaction ID confirming return |
| amount_lanoshis | REQUIRED | Amount returned in Lanoshis (1 LANA = 100,000,000 lanoshis) |
| memo | OPTIONAL | Free-form note |
Purpose: Registrar maintains an authoritative list of all LanaCoin wallets belonging to one customer. One event per (registrar_pubkey, customer_pubkey). Replaceable → newest event replaces older ones.
| Tag | Description |
|---|---|
["d", "CUSTOMER_PUBKEY_HEX"] | Required, identifies the customer (used for replaceability) |
["p", "CUSTOMER_PUBKEY_HEX"] | Standard pubkey reference to the customer |
["status", "active|temporary_suspended|maxcap"] | Overall status of customer's wallet record |
["w", wallet_id, wallet_type, "LANA", note, amount_unregistered_lanoshi] | One tag per wallet with 6 fields |
{
"kind": 30889,
"created_at": 1756915200,
"tags": [
["d", "CUSTOMER_PUBKEY_HEX"],
["p", "CUSTOMER_PUBKEY_HEX"],
["status", "active"],
["w", "LcGT73RnXXwMUUyaMoHeZnVPYTa28j9F3f", "Main", "LANA", "Primary daily wallet", "0"],
["w", "LTTDqYuL24LAcpkwPmuwB9CzfiAcdEYinK", "Savings", "LANA", "Cold storage", "2500000000"],
["w", "LXq1Abc123xyz7890...", "Registrar", "LANA", "Registrar-linked wallet", "0"]
],
"content": ""
}
Event kinds used for LANA payments on Nostr. These kinds enable off-chain payment intents, batch settlements, and seamless integration with the LanaCoin blockchain.
Purpose: Sender declares an off-chain LANA payment to be included in a future batch.
Replaceability: Parameterized by ["d","lash:<uuid>"] (unique per sender)
| Tag | Format | Description |
|---|---|---|
| d | lash:<uuid> | Idempotent Lash ID - unique identifier for this payment intent |
| p | <recipient_npub> | Recipient Nostr identity |
| amount | <lanoshis> | Payment amount in smallest LANA unit (lanoshis) |
| chain | LANA | Target chain - always "LANA" |
| from_wallet | <lana_address> | Sender funding wallet |
| to_wallet | <lana_address> | Recipient payout wallet |
| Tag | Format | Description |
|---|---|---|
| e | <event_id> | Reference a specific Nostr post/event |
| a | 89805:<merchant_pubkey>:inv:<uuid> | Reference a parameterized invoice |
| memo | <short note> | Short note about the payment |
| cat | like|tip|purchase|donation | Intent category |
| expires | <unix_seconds> | Expiration timestamp. Default: 72h from created_at |
Purpose: Confirms that a specific LASH intent (89800) was paid on-chain.
| Tag | Description |
|---|---|
| d | Same Lash ID as in 89800 |
| p | Recipient identity |
| amount | Actually paid amount in lanoshis |
| chain | Always "LANA" |
| from_wallet | Sender funding address used |
| to_wallet | Recipient payout address paid |
| txid | On-chain transaction ID |
| vout | Output index paying to_wallet |
| status | confirmed|reorged |
| last_block | <height>,<block_time_unix> |
| e | REQUIRED - links to 89800 intent or tipped post |
Unified Person-to-Person Payments via Nostr → LanaCoin. One replaceable Nostr event = one payment lifecycle. Direct settlement between two Nostr HEX identities.
["d","lash:<uuid>"]
One UUID = one payment forever.
| State | Description |
|---|---|
| open | Payment intent created |
| claimed | Payment locked by client until executed |
| paid | On-chain payment completed |
| expired | (optional) intent timed out |
| canceled | (optional) user canceled |
Note: No failed state. If chain broadcast fails, event remains claimed until success or lease expiry.
| Tag | Description |
|---|---|
| ["d","lash:<uuid>"] | Payment identity |
| ["a","0:<sender_hex>"] | Sender Nostr HEX (KIND-0 identity) |
| ["p","<recipient_hex>"] | Recipient Nostr HEX |
| ["e","<event_id>"] | Referenced Nostr event (reason / context) |
| ["amount","<lanoshis>"] | Amount in lanoshis |
| ["chain","LANA"] | Always LANA |
| ["from_wallet","<lana_address>"] | Sender Lana wallet |
| ["to_wallet","<lana_address>"] | Recipient Lana wallet |
| ["state","open|claimed|paid|expired|canceled"] | Current payment state |
| Tag | Description |
|---|---|
| ["by","<client_id>"] | Client/device claiming & executing |
| ["lease_expires","<unix_seconds>"] | Claim lock duration (e.g., 7 days) |
| ["txid","<hex>"] | On-chain tx ID (paid only) |
| ["vout","<index>"] | Output index (paid only) |
| ["last_block","<height>","<unix_time>"] | Last observed canonical chain state |
| ["seq","<int>"] | Sequence (monotonic replacement safety) |
| ["expires","<unix_seconds>"] | Intent expiration |
| ["memo","text"] | Free text note |
Publish open event.
Allowed if: state = open, OR state = claimed AND lease_expires < now
state = "claimed"
by = "<client_id>"
lease_expires = now + 7 days
seq++
Allowed only if: state = claimed, by = current client, lease_expires still valid
state = "paid"
txid = "<txid>"
vout = "<index>"
last_block = "<height>","<timestamp>"
seq++
{
"kind": 39991,
"tags": [
["d","lash:abcd"],
["a","0:1122aa...ff88"],
["p","2233bb...ee77cc"],
["e","9f1a...44ef"],
["amount","250"],
["chain","LANA"],
["from_wallet","Labc123..."],
["to_wallet","Lxyz789..."],
["state","open"]
]
}
{
"kind": 39991,
"tags": [
["d","lash:abcd"],
["a","0:1122aa...ff88"],
["p","2233bb...ee77cc"],
["e","9f1a...44ef"],
["amount","250"],
["chain","LANA"],
["from_wallet","Labc123..."],
["to_wallet","Lxyz789..."],
["state","paid"],
["by","mobile-ios"],
["txid","abcd1234..."],
["vout","1"],
["last_block","123456","1732980410"],
["seq","3"]
]
}
Decentralised Awareness Acknowledgement on Nostr. A revolutionary approach to collective decision-making based on awareness expansion rather than competitive voting.
Defines a collective awareness proposal that requires full (100%) acceptance among participating members. This event is replaceable.
["title","<short title>"]
["s_perspective","<short perspective>"]
["l_perspective","<long perspective>"]
["consequence_yes","<result_if_accepted>"]
["consequence_no","<result_if_not_accepted>"]
["level","local" | "global"]
["start","<unix_seconds>"]
["end","<unix_seconds>"]
["tally_at","<unix_seconds>"]
["oracle","<NOSTR HEX ID>"]
["d","awareness:<slug_or_uuid>"]
["status","draft" | "active" | "archived"]
["link","<url>"]
["doc","<url>"]
["img","<url>"]
["youtube","<youtube_url>"]
["quorum_scope","global" | "local:SI-LJ"]
["donation_wallet","<wallet_id>"]
["prev","<event_id>"]
Participant acknowledges resonance or resistance to governance proposals.
| Tag | Description |
|---|---|
| ["a", "38883:<proposer_hex>:awareness:<slug>"] | Reference to proposal (NIP-33 address) |
| ["vote", "yes" | "no"] | Explicit acknowledgement (silence = yes) |
| ["comment", "<text>"] | Optional refinement comment |
| ["weight", "<integer>"] | Vote weight (if quorum-weighted) |
Oracle publishes final results of acknowledgements for governance integration.
| Tag | Description |
|---|---|
| ["a", "38883:<proposer_hex>:awareness:<slug>"] | Reference to proposal |
| ["result", "anchored" | "resisted"] | Final outcome |
| ["yes_count", "<integer>"] | Total YES acknowledgements |
| ["no_count", "<integer>"] | Total NO acknowledgements |
| ["resistance_percent", "<float>"] | Resistance as percentage |
| ["threshold", "<float>"] | Threshold that was applied |
Interoperable encrypted direct messages using NIP-04.
| Field | Value |
|---|---|
| Purpose | Interoperable encrypted direct messages |
| Event kind | 4 (one message per event) |
| Crypto | secp256k1 ECDH → SHA-256 → AES-256-CBC (+ PKCS#7 padding) |
| Content wire format | base64(ciphertext)?iv=base64(iv) |
| Routing | Required ["p","<recipient_hex>"] tag |
{
"kind": 4,
"created_at": <unix_seconds>,
"tags": [
["p", "<recipient_hex>"],
["e", "<replied_event_id>"] // optional
],
"content": "<base64(ciphertext)>?iv=<base64(iv)>",
"pubkey": "<sender_hex>",
"id": "<event_id>",
"sig": "<sender_signature>"
}
compressed = 0x02 || <x_only_32_bytes>key = SHA-256(shared_x) → 32 bytes → AES-256 keybase64(ciphertext) + "?iv=" + base64(iv)Inbox:
[{ "kinds": [4], "#p": ["<my_hex>"], "since": <unix> }]
Sent:
[{ "kinds": [4], "authors": ["<my_hex>"], "#p": ["<their_hex>"], "since": <unix> }]
Decentralized marketplace for goods and services using Nostr events.
| Tag | Description |
|---|---|
| ["t","offer"] | Type marker |
| ["p","<seller_pubkey_hex>"] | Seller pubkey |
| ["d","<uuid_v4_or_ulid>"] | Stable NIP-33 parameter key |
| ["l","EN"] | Language (BCP-47) |
| ["ttl","<short_title>"] | Short title |
| ["desc","<description>"] | Concise description |
| ["cur","EUR"] | Base currency code |
| ["amt","50.00"] | Price amount (string) |
| ["walletid_pay","<lana_address>"] | Destination LanaCoin address |
| ["status","active"|"archived"] | Offer visibility state |
| ["max_sales","<integer>"] | Max purchases before auto-archive |
["mode","product"|"onsite_service"|"online_service"]["geo","<lat>","<lon>","<address>"] — Precise location["loc","<city_or_region>"] — Broad location["img","<main_image_url>"]["imgs","<url1>","<url2>", ...] — Gallery["cat","<category>"]["cond","new"|"used"|"refurbished"]["ship","pickup_only"|"shipping_available"]["expiration","<unix_timestamp>"]Posted by buyer after payment. Constitutes the transaction history layer.
| Tag | Description |
|---|---|
| ["a","31950:<seller_pubkey>:<d>"] | Canonical address of the offer |
| ["e","<offer_event_id>"] | Specific offer event version |
| ["p","<seller_pubkey>"] | Seller reference |
| ["amt","50.00"] | Amount paid |
| ["cur","EUR"] | Currency |
| ["txid","<txid>"] | On-chain transaction ID |
| ["status","confirmed"] | Payment status |
Decentralized merchant payment processing using Nostr events.
Defines a merchant business unit (store, outlet, or service point).
| Tag | Example | Description |
|---|---|---|
| ["d","..."] | b7f98a61b2f04f90b443a8b5e91c72df | Persistent ID for NIP-33 updates |
| ["unit_id","..."] | b7f98a61b2f04f90b443a8b5e91c72df | Constant unique Business Unit ID |
| ["name","..."] | Lana Café Ljubljana | Display name |
| ["owner","..."] | npub1abcdef... | Owner's Nostr public key |
| ["p","..."] | hexpubkey_of_owner | Owner reference |
| ["receiver_name","..."] | Lana Café d.o.o. | Legal receiver entity |
| ["receiver_address","..."] | Slovenska cesta 10 | Street address |
| ["receiver_zip","..."] | 1000 | ZIP code |
| ["receiver_city","..."] | Ljubljana | City |
| ["receiver_country","..."] | SI | Country ISO |
| ["bank_name","..."] | LanaBank | Bank name |
| ["bank_swift","..."] | LNBASI2X | SWIFT/BIC code |
| ["bank_account","..."] | SI56192000012345678 | IBAN |
| ["longitude","..."] | 14.505751 | Longitude |
| ["latitude","..."] | 46.056946 | Latitude |
| ["country","..."] | SI | Country of operation |
| ["currency","..."] | EUR | Preferred currency |
| ["status","..."] | active | Status |
Fee and payout bonus policy applied by LanaPays processor.
| Tag | Description |
|---|---|
| ["d","policy_2025Q4"] | Policy identifier |
| ["unit_id","..."] | Associated business unit |
| ["a","30901:<pubkey>:<unit_id>"] | Reference to business unit |
| ["fee_percent","0.00"] | Transaction fee percentage |
| ["bonus_multiplier","1.30"] | Bonus multiplier for LANA |
| ["valid_from","2025-10-01"] | Policy start date |
| ["valid_until","2026-01-01"] | Policy end date |
| ["lanapays_pubkey","..."] | LanaPays processor pubkey |
| ["status","active"] | Policy status |
Replaceable app settings (NIP-33) that synchronize user preferences, module configurations, and layout across devices.
| Field | Description |
|---|---|
| Kind | 37334 |
| Replaceability | Yes — NIP-33 |
| Canonical Key | ["d","<settings_id>"] |
| Canonical Address | a = "37334:<pubkey>:<settings_id>" |
| Tag | Description |
|---|---|
| ["d","<settings_id>"] | Canonical identifier for NIP-33 replacement |
| ["scope","global"|"device"|"profile"] | Determines where settings apply |
| Tag | Description |
|---|---|
| ["device","<device_id>"] | UUID identifying the device (when scope=device) |
| ["profile","<profile_name>"] | Profile name (when scope=profile) |
| ["expires","<unix_seconds>"] | Optional expiration timestamp |
| ["schema","app.settings","1"] | Schema name and version |
| ["app","lana.app"] | Application identifier |
Wallet, Social, Chat, 8Wonder, Own, Rocks, LanaPayUs, PaperLana, Registrar, BuyLana, SellLana, MarketPlace
{
"modules": [
{ "id": "Wallet", "enabled": true, "order": 1, "config": {} },
{ "id": "Social", "enabled": true, "order": 2, "config": {} },
{ "id": "Chat", "enabled": true, "order": 3, "config": {} }
],
"layout": {
"style": "tabs",
"show_labels": true,
"compact": false
}
}
KIND 0 events are Nostr metadata events that contain user profile information. This schema extends the standard Nostr profile with LanaCoins-specific fields, payout methods, and mandatory acceptance of unconditional self-responsibility.
"statement_of_responsibility": "I accept full and unconditional self-responsibility for everything I do or don't do inside the Lana World."
| Field | Description |
|---|---|
| name | User's name/username |
| display_name | Display name |
| about | Biography/description text |
| location | Geographic location |
| country | Country ISO code |
| currency | Preferred currency |
| lanoshi2lash | Exchange rate value |
| whoAreYou | Human or EI (Enlightened Intelligence) |
| orgasmic_profile | Orgasmic profile information |
| ["lang","<bcp47>"] | Language preference (BCP-47 code) |
| ["t","..."] | Things user is interested in |
| ["o","..."] | Intimacy interests |
| statement_of_responsibility | Personal declaration of self-responsibility |
| Field | Description |
|---|---|
| User's email address (standard email format). Optional. | |
| phone | Phone number without country code prefix, digits only (e.g., "41123456"). Optional. |
| phone_country_code | ITU-T E.164 country calling code with "+" prefix (e.g., "+386", "+1"). Required if phone is provided. |
| Field | Description |
|---|---|
| lanoshi2lash | Exchange rate value - LanaCoins × 100,000,000 = latoshis |
| lanaWalletID | LanaCoins wallet identifier |
| whoAreYou | Human or EI (Enlightened Intelligence) |
| latitude | Geographic latitude (WGS-84, optional) |
| longitude | Geographic longitude (WGS-84, optional) |
{
"id": "string-unique-per-profile",
"scope": "collect | payout | both",
"country": "ISO-3166-1 alpha-2",
"scheme": "Region.Code",
"currency": "ISO-4217",
"label": "Friendly name",
"fields": { /* scheme-specific */ },
"verified": boolean,
"primary": boolean
}
Unconditional payment proposals and confirmations for voluntary contributions with on-chain verification.
User-published list of unregistered LanaCoin wallets for transparency and ecosystem tracking. Parameterized replaceable event.
LanaCrowd community crowdfunding platform with project definitions, visibility control, and support tracking.
Official Knight registry and registration events for LanaCoin ecosystem with validation and tracking.
Lana Ecosystem event definitions (online/physical) and user registrations with attachments and capacity.
Canonical, spam-resistant knowledge layer for AI learning and Lana applications with governance-based authority.
Decentralized P2P exchange for LANA coins via NOSTR events.
Person Reference system for giving references/endorsements and building a decentralized web of trust.
Self-responsibility process (OWN ▲) between two people for opening responsibility processes.
Announces and tracks GitHub repositories that are part of the Lana Ecosystem. NIP-33 parameterized replaceable — newest event with same d-tag replaces older ones.
| Tag | Description |
|---|---|
d | Unique stable slug (NIP-33 replaceability key) |
title | Human-readable name |
repo | MANDATORY. Full GitHub URL |
description | Short description of the application |
status | active | experimental | archived |
| Tag | Description |
|---|---|
language | Primary programming language |
t | Topic tags (always include "lana") |
p | Nostr hex pubkey of the person responsible for this repository. Allows Digital Beings and developers to contact the maintainer directly via Direct Message (KIND 4 NIP-04 DM) with questions about the codebase. |
Extended description of the application — purpose, connections, technical notes for Digital Beings.
d tag must be a unique, stable slug. Once set, it should not change.repo tag is MANDATORY. Without it, a Digital Being cannot locate the codebase.d tag — it automatically replaces the previous version.p tag is present, Digital Beings may send questions about the repository directly to the responsible person via NIP-04 Direct Message (KIND 4).Publishes awareness content (full transcripts, guides, reflections) for the Lana Ecosystem. Immutable log — events are never replaced. Digital Beings process entries oldest-first.
| Tag | Description |
|---|---|
title | Title of the awareness entry |
description | Short summary (1-2 sentences) |
source | youtube | blog | document | internal | event |
lang | Language (ISO 639-1) |
| Tag | Description |
|---|---|
link | URL to original source |
published_at | Unix timestamp of original publication |
t | Topic tags |
rev | Revision indicator |
Documents NOSTR KINDs with full revision history. Non-replaceable — every revision is permanently preserved. Active definition = highest rev number.
| Tag | Description |
|---|---|
kind_id | KIND number being documented (string) |
title | Human-readable name |
description | One-sentence description |
rev | Revision number (strictly increasing integer) |
status | draft | active | deprecated |
| Tag | Description |
|---|---|
link | URL to full docs on lananostr.site |
prev | Event ID of previous revision |
t | Topic tags |
JSON object (serialized string) containing full technical documentation: description, tags, rules, example_event, changelog.