delphi.market Mega Thread #1

lol, I accidentally hit post because the layout shifted when I wanted to click on the info icon after I uploaded my 15 MB+ wallpaper. Now I have 10 minutes to finish this post.
I realized I could use pins in ~oracle to have a dedicated place to share feedback and discuss ideas for delphi.market. The original goal of ~oracle was to be an interface to delphi on SN anyway. Every post was intended to be a market on delphi and SN could be the place for the social aspect of these markets.
Additionally, I will also share my goals for the next 6 weeks every 6 weeks like this. So that's why this post is just the first of a series of mega threads. This one will be replaced by another post on March 25, 2024.
We can also see this post itself as some kind of prediction: will @ekzyis have done what he said he will do in 6 weeks?
So here are my hopefully humble enough goals in the order of their priority:

Goals for Next 6 Weeks

1. Use real sats but limit trading volume

I noticed that using mutinynet is probably limiting the amount of interest in it as well as my dedication to the project. So I decided that a priority should be to use real sats.
My current idea is to have a global limit and a limit per market. Limits exist to contain how many funds can be lost in case of a bug or exploit. This also allows me to gradually increase my commitment to maintenance of the market. Ideally, the market should just run itself and I don't have to do anything. But obviously, there will be problems in the early stages. I am still figuring all kinds of stuff out (UX, security, infrastructure, ...).
But the more confident I get in my code, the higher the limits will be. This is inspired by Mostro's limit.

2. Better front page

The front page is pretty bad right now. No idea which markets are active, which are already settled or any other information like trading volume, last activity etc.
So this needs to be improved. @kr gave me some inspiration for good front pages by providing links to other prediction markets. Maybe he can drop these links again since I probably won't be able to find these links again. But everyone else is also invited to give me inspiration :)
So far, I might use Manifold Markets as inspiration. Turns out, they even use a similar background color.

3. PWA with push notifications

A PWA allows push notifications. They can be used to notify about new orders in a market or if your order was matched. That shouldn't be too hard. This was one of the first things I did when I joined SN. However, getting push notifications right on iOS might be a problem since we have this problem on SN since a long time and it doesn't seem to be a priority to fix the shallow support in WebKit for the Apple/WebKit engineers. But let's see.

4. Overhaul UI/UX + code base

Somewhat related to the second point. @Natalia mentioned in the announcement that the contrast is bad and I agree. I like the consistent style of using ASCII art but other things definitely have a lot of room for improvement.

Long Term Goals

Some long term goals (also in somewhat order of priority):
1. Implement "self-service" of trades with bonds
My original idea was that in most cases, people would just select the outcome themselves. If both parties in a trade agree, the trade is settled with no oracle required. Only if they don't find consensus, an oracle determines the outcome (me or a fedimint, see below). This oracle then takes the bond of the loser as a fee. So there should be some incentive to not have to use a oracle.
A problem with this is that this only works where outcomes are pretty easy to verify.
2. Private markets
Users can already generate markets but all markets are public. If you just want to wage a bet with a friend about something dumb, you should also be able to create a market with an invite link or something with the same UX as public markets. That's basically aligning with the "P2P vision" I originally had. I want to make prediction markets as accessible as possible. Some kind of "microbetting platform". My priority is therefore not to have huge trading volumes or making a profit one day.1 There are other markets that already do this.
3. Look into fedimints and ~ecash for custody, payouts and oracle
Since I got an intro into cashu in btc++ Berlin from @calle, I wanted to look more into this topic anyway.

Footnotes

  1. At least currently, can't promise anything about the future.
Unfortunately, I was only able to put up a 503 Service Unavailable page as a preparation for a full rewrite with cashu and more Golang, UX/UI experience etc. But I think I should be able to create MVPv2 within the next two weeks 👀
So new deadline is 2024-04-08.
I wrote down some more details about MVPv2:
1. Use 🐬 as mascot for delphi.market
  • delphi sounds like dolphin (much more in German)
  • dolphins are smart
  • they live in water ("liquid markets")
2. Use cashu
  • no need to track user balances in a database
  • no tx fees for orders
  • streamlined UX since onboarding can ask for a one-time deposit (see 4. Trading System)
  • easy payout via push where receiver does not have to be online
3. Frontpage/Theme
  • active markets only (settled markets are hidden)
  • use cashu color theme
4. Trading System
  • onboarding: "What is your total budget for betting?" and mint corresponding amount of cashu tokens
  • per market, you specify how sure you are and how much you want to bet
  • there is only one order per market and user
    • this should eliminate confusing UX around orders like big order books with multiple orders per user
  • order form could simply be a slider for your current prediction and amount you want to bet
  • if your prediction changes, just move the slider and your existing order is automatically updated
    • if something happens that changes your prediction, you want to be able to update predictions as fast as possible
    • precise changes with slider must be possible to make slider UX really good: use slider-in-slider on long press for small changes? (slider value can also be changed by simply typing a number into an input though)
  • focus on partial settlement of orders
    • how much you bet no longer matters to find a match: if you are 90% sure and someone else is 10% sure, you will match, even if you bet 900k sats and they bet 10 sats. (90 sats of your order will be marked as filled)
  • shares and expiration prices are abstracted away during making predictions (= buying shares)
    • users don't need to care about prediction market internals like buying and selling shares, only about their current prediction
    • (internally, shares will expire at 0 or 100 sats)
  • selling shares is for market exit / taking profits and considered to be an "advanced feature" from a UX perspective
reply
More transparency for the subscribers to this post:
I talked with @k00b since my attention was split between SN and this self-inflicted deadline for delphi.market MVPv2.
We've decided that I will first finish a pressing chunk of work on wallet stuff and then I'll have two days off to focus on delphi. I think these two days off (+ weekend) are all I need to write the code for everything I thought about the past weeks months. If not, I will work on another SN chunk first.
So this means the deadline above is outdated now but I feel a lot of relief. Less pressure from multiple sides at once.
I almost want to set a new deadline or at least mention an ETA, but I won't. This feels like a bad habit where I pressure myself more and more in the hope I can get more and more stuff done until I crumble under the pressure and then do nothing, lol. I will simply get to this when I finished the aforementioned chunk of work.
reply
I predict that as excited as we all are for delphi, most of us are perfectly happy if delaying that means more SN improvements.
You're doing great work and we're all in your debt (to a limited non-legally binding degree).
reply
240 sats \ 0 replies \ @ek OP 15 Mar
I changed my plans. ~ecash is not a long term goal anymore: I will do a full rewrite with a cashu mint included and that's how real sats will go live in 10 days.
Using ecash means no tx fees for orders, easy payout (push instead of pull) and if you deposit more funds than you end up using, you can simply use these cashu token to zap users on nostr etc.
It simply makes sense from a lot of angles.
reply
Now I have 10 minutes to finish this post.
That's a great commitment device. Now I have 10 minutes to finish this comment.
Cool ideas, I'm looking forward to the real sats.
reply
You better hurry, @grayruby's been throwing lots of bets around on SN. Demand is growing rapidly.
reply
Feeling the wealth effect of the ATH price. I guess I better cool it now that we had our first pullback.
reply
44 sats \ 0 replies \ @ek OP 15 Mar
Demand is growing rapidly.
I know, already feeling the FOMO 🙈
reply
26 sats \ 1 reply \ @ek OP 6 Mar
I'm looking forward to the real sats.
I didn't mention it in the post (because of the unintended time limit) but you were definitely the person I had in mind. I will probably start with a global limit of 1m sats with 100 or 250k per market. So there could be 4-10 markets running simultaneously.
I think that should be enough for initial gambling. I also think that should be in the ballpark of your initial gambling needs?
If you want to stay updated (I see you as my emotional angel investor), subscribe to this post since I'll use it for regular updates.
reply
Subscribed
reply
0 sats \ 1 reply \ @ek OP 12 Feb
We can also see this post itself as some kind of prediction: will @ekzyis have done what he said he will do in 6 weeks?
I don't think I'll be able to achieve all these goals but at least one or two would already be nice. So see these goals more as my priorities and expect at least some progress on them.
Gradually then suddenly :)
reply
I didn't realize this site tolerated deadnaming.
reply