diff --git a/lnbits/extensions/market/README.md b/lnbits/extensions/market/README.md
index 22d38e0d6..9f351c392 100644
--- a/lnbits/extensions/market/README.md
+++ b/lnbits/extensions/market/README.md
@@ -1,9 +1,196 @@
-
Market
-A movable market stand
-Make a list of products to sell, point the list to an relay (or many), stack sats.
-Market is a movable market stand, for anon transactions. You then give permission for an relay to list those products. Delivery addresses are sent through the Lightning Network.
-
+## Nostr Diagon Alley protocol (for resilient marketplaces)
-API endpoints
+#### Original protocol https://github.com/lnbits/Diagon-Alley
-curl -X GET http://YOUR-TOR-ADDRESS
+> The concepts around resilience in Diagon Alley helped influence the creation of the NOSTR protocol, now we get to build Diagon Alley on NOSTR!
+
+In Diagon Alley, `merchant` and `customer` communicate via NOSTR relays, so loss of money, product information, and reputation become far less likely if attacked.
+
+A `merchant` and `customer` both have a NOSTR key-pair that are used to sign notes and subscribe to events. For further information about NOSTR, see https://github.com/nostr-protocol/nostr
+
+
+## Terms
+
+* `merchant` - seller of products with NOSTR key-pair
+* `customer` - buyer of products with NOSTR key-pair
+* `product` - item for sale by the `merchhant`
+* `stall` - list of products controlled by `merchant`
+* `marketplace` - clientside software for searching `stalls` an buying `products`
+
+## Client software
+
+### Merchant admin
+
+Where the `merchant` creates, updates and deletes `stalls` and `products`, as well as where they manage sales, payments and communication with `customers`.
+
+The `merchant` admin software can be purely clientside, but for `convenience` and uptime, implementations will likely have a server listening for NOSTR events.
+
+### Marketplace
+
+`Marketplace` software should be entirely clientside, either as a stand-alone app, or as a purely frontend webpage. A `customer` subscribes to different merchant NOSTR public keys, and those `merchants` `stalls` and `products` become listed and searchable. The marketplace client is like any other ecommerce site, with basket and checkout. `Marketplaces` may also wish to include a `customer` support area for direct message communication with `merchants`.
+
+## `Merchant` publishing/updating products (event)
+
+NIP-01 https://github.com/nostr-protocol/nips/blob/master/01.md uses the basic NOSTR event type.
+
+The `merchant` event that publishes and updates product lists
+
+ALL fields are optional apart from the `timestamp`. Data from newer events should replace data from older events.
+
+`action` types (used to indicate changes):
+* `update` element has chnaged
+* `delete` element should be deleted
+* `suspend` element is suspended
+* `unsuspend` element is unsuspended
+
+
+```
+{
+ "name": ,
+ "description": ,
+ "timestamp": ,
+ "action": ,
+ "stalls": [
+ {
+ "id": ,
+ "name": ,
+ "description": ,
+ "categories": ,
+ "currency": ,
+ "action": ,
+ "products": [
+ {
+ "id": ,
+ "name": ,
+ "description": ,
+ "categories": ,
+ "amount": ,
+ "price": ,
+ "action": ,
+ },
+ {
+ "id": ,
+ "name": ,
+ "description": ,
+ "categories": ,
+ "amount": ,
+ "price": ,
+ "action": ,
+ },
+ ]
+ },
+ {
+ "id": ,
+ "name": ,
+ "description": ,
+ "categories": ,
+ "currency": ,
+ "action": ,
+ "products": [
+ {
+ "id": ,
+ "name": ,
+ "categories": ,
+ "amount": ,
+ "price": ,
+ "action": ,
+ }
+ ]
+ }
+ ]
+}
+
+```
+
+## Checkout events
+
+NIP-04 https://github.com/nostr-protocol/nips/blob/master/04.md, all checkout events are encrypted
+
+### Step 1: `customer` order (event)
+
+ALL fields are optional apart from `timestamp`.
+
+```
+{
+ "id": ,
+ "name": ,
+ "description": ,
+ "address": ,
+ "message": ,
+ "timestamp": ,
+ "contact": [
+ "nostr": ,
+ "phone": ,
+ "email":
+ ],
+ "items": [
+ {
+ "id": ,
+ "quantity": ,
+ "message":
+ },
+ {
+ "id": ,
+ "quantity": ,
+ "message":
+ },
+ {
+ "id": ,
+ "quantity": ,
+ "message":
+ }
+
+}
+
+```
+
+Merchant should verify the sum of product ids + timestamp.
+
+### Step 2: `merchant` request payment (event)
+
+Sent back from the merchant for payment. Any payment option is valid that the merchant can check.
+
+`payment_options`/`type` include:
+* `url` URL to a payment page, stripe, paypal, btcpayserver, etc
+* `btc` onchain bitcoin address
+* `ln` bitcoin lightning invoice
+* `lnurl` bitcoin lnurl-pay
+
+```
+{
+ "id": ,
+ "message": ,
+ "timestamp": ,
+ "payment_options": [
+ {
+ "type": ,
+ "link":
+ },
+ {
+ "type": ,
+ "link":
+ },
+ {
+ "type": ,
+ "link":
+ }
+}
+
+```
+
+### Step 3: `merchant` verify payment/shipped (event)
+
+Once payment has been received and processed.
+```
+{
+ "id": ,
+ "message": ,
+ "paid": ,
+ "shipped": ,
+}
+
+```
+
+## Customer support events
+
+Customer support is handle over whatever communication method was specified. If communicationg via nostr, NIP-04 is used https://github.com/nostr-protocol/nips/blob/master/04.md.
\ No newline at end of file