Busting butt

Wow, what a roller coaster day. I was dragging butt all morning and didn’t get a lot done, but sometime around midday I kicked into gear and solved a problem that had been bugging me for some time. It’s about SAIAdao of course.

I’m not going to spend too much time going over it here because I’m actually writing a proposal about it right now and don’t want to repeat myself. Let me just say that there was a heated debate about it for several hours today, and I started drafting up the problem statement and goals section before I had a solution. Once I properly defined those I started sketching things out on paper and developed a working plan rather quickly. I then threw some numbers in a spreadsheet and, to my amazement, my new proposal seems to work rather well.

Now I just need to finish explaining it in lay terms.

Last night also saw some progress in the grant proposal I mentioned last night. I managed to recruit a valuable team member. Still, there’s little I can say here on the subject at this time.

Other than that I did a few changes to the serum-indexer that I overlooked during the last change, and I’ve been working on converting some JS code that will be used to generate our market update code when Star Atlas does theirs. It’s coming along quite well, even considering my unfamiliarity with JS and async/await functions.

More work tonight, but hopefully I can get to bed earlier than I did last night.

Writing day

I did a lot of writing today.

First up on my agenda was the weekly SAIAdao update. Flat would be the word I would use to describe it. I actually didn’t write too much about the DEX because I didn’t want to give to much away this week. I got a lot more work to do, including paying the bills, so I’ll probably keep quiet on it until it’s a month old.

I had at least two discussions over voice chat about Solana NFTs. I think I’ve finally wrapped my head around the actual fungible aspects of it.

So Star Atlas “NFTs” are technically spl-token mints with zero decimals and a metadata account. What most people think of as NFTs are actually spl-token mints with zero decimals, a supply of one, and a metadata account.

I’ve been spending a lot of time thinking about it and talking about it, but I’m not spending any development time on it at all. I’m stuck in Typescript hell. This morning I figured out that I was working off the archived version of the Solana explorer, so I forked the repo and tried to run it, but I got Typescript errors. How it could have possibly been checked in in such a state is beyond me. Such craftsmanship. I kid.

I’m kind of fixated on the whole Serum market transaction history thing. I’ll have more to say about that later on, but there might be grants and collaborations involved. Let me just say that there’s more writing involved.

For now I’ll just be happy if I can get these TS libraries to compile.

Serum markets

What a day. Last night I watched Free Guy with Elder, and showed her a bit of Ready Player One before I made her go to bed. I stayed up a bit too late. This morning I got up fairly early and finished up some things I was working on last night. I had been reconfiguring the exchange’s API/indexer. It runs behind Nginx’s Unit, and I wanted to have a process running on a test branch while I made sure the new configuration things were working like they were supposed to. I finished that up this morning in time to do my Sunday 9AM Perpetual accounting.

This week was pretty flat. BTC was negative, and I only made $150 on the ETH side. I rolled that into a 10x position. I usually don’t mind not making money on the funding rate if the price is going up. BTC was up 13% on the week, ETH was down less than five dollars.

I spent most of the day working on working through my exploration of Serum markets on Solana. It’s been quite the battle, trying to figure out how to run JavaScript or TypeScript and make it work with these other programs that I’ve been using. So basically I’m trying to look at how the Solana explorer works, how it’s able to parse certain transactions, and figure out how I can do the same. I was unable to just write a JS script that could import it, as it’s not a module, so it’s been a lot of trial and error. Most of it is TypeScript, so I’ve been trying to do that, which is an entirely different beast than I’ve been used to. I had a really hard time trying to get a script to run, so I was hoping to just start with the actual explorer React code and rip out everything that I didn’t need. I mean I will need to make this an app at some point, after all, but I couldn’t get it to compile.

The TypeScript page was helpful in that it led me to Gluegun, which allows one to write Javascript CLIs. I had a bit of trouble getting Yarn’s bins to work, but I fixed my path and was able to get my script to run through the CLI. Now it’s time to start digging really deep in the explorer’s code to figure out how it determines whether a transaction is a Serum one, hopefully from there I can figure out what the hell is happening with each instruction. Hopefully it will give me enough information that I can replay the history and actually see what trades occured.

I’m probably over optimizing already, but I’m guessing that I’ll need to log the transactions somewhere to keep from blowing up my RPC calls. The market I’m looking at has just over two thousand transactions, but basically I’d want to grab them, a thousand at a time, and start from the market init call, and then walk through all the order placement stuff. I just hope I don’t have to simulate the internal state of the orderbook. It would be a pain, but I have the Rust code for the market itself if I need to. My fear is that I’ll have to keep track of the orderbook myself and figure out when they’ve been matched, but I’m still too far from even knowing how to do that.

Still, if I can make something work, I might be able to sell this thing to Step.Finance or someone like that. It would probably be a lot easier to look for transactions for a single wallet and compute the cost basis just by looking at the token accounts associated with that pubkey. It’s probably actually a much easier problem to solve. Much smaller set of transactions that one would have to look at, hopefully. Now that I know how to get all the transactions associated with an addresses, we can parse those for the Serum ones, and figure out what went in and what came out.

So I’ve got another hour before bed. Tomorrow I have an update for SAIAdao, and Missus has a work holiday.

Good dad day

Today has been a bit of a day, and I’m not sure how much of it I can relate. I actually left the house today and “went out” as I used to call it, and visited a few friends. I don’t get out enough.

First I went to see my old boss. I guess I should really call him an ex-boss, but it was just a reminder of how old I feel. We caught up while drinking a beer, and at one point a man came out from the house across the street and waved. Bossman told me about the man’s dad, who had passed away. It was basically the old cliched story about the beat cop who gets killed a couple of days before retirement. “How you doing, Bob?” “Great, I’m retiring in nine months.” Three months later: “How you doing, Bob?” “Great I just made my last mortgage payment.” Three month laher: “How you doing, Bob?” Dead, of a massive heart attack.

Sure, I talked about bitcoin to this nocoiner, told him what I was doing now. It’s hard to believe that it’s only been four months since I left there. It seems like a million years ago.

After that I had a meeting with a newer friend. This one is into crypto, so we had plenty to catch up on. And I think I had some insights about daos that I’ll probably share a bit later.

Again, it’s been so long since I was actually around people who weren’t related to me. Sure, I have numerous Discord and Twitter associates that I’ve been speaking to over the last few months, but I can honestly say that I don’t have a single person that I can call a close friend.

Except my wife. I guess I may be feeling a bit guilty about getting out of the house, even if it is the first time in so long. It had me thinking a lot about the man I used to be and the man I am now. I know my wife has been quite worried about me slipping back into old habits, but I don’t think she’s as worried about it as I am.

I had a lot to think about on my drive back. I got home and gave the girls my undivided attention for two straight hours, and managed to get through the entire evening without yelling or fighting. I think I did a pretty good job.

Week end

Today was moderately productive, although the fact that I’m wrto iting this at night should tell you that it wasn’t too productive. I woke up a bit late and had to drive Younger to school. They made me take her into the nurse to turn in her negative COVID test, and I felt like a complete bum walking in, wearing a white t-shirt, gym shorts and water shoes.

Got home and did a bit of nothing for a while, meditated and then had a meeting with a firm that is doing NFT custody and lending agreements on Ethereum. The subject was Star Atlas, of course, and how we can bring lending to that game.

I need to do an update to the exchange to update the PILOT and CAPN tokens to their new iterations. Our auto-update scripts aren’t quite there yet, so I had to do a bunch of debugging to get it working right. While I was at it I made some other commits to try and hem up our build process. And also our API got hung up again, so I had to bounce Unit and spent a bunch of time looking at the various options we have with AWS to shore it up. I’ll probably need to put it behind a API Gateway, cache it and add some sort of CORS header to keep people from using it. It a lot of … work at this point that I’m not looking forward to.

I also found out that the Girl Scout camping trip was cancelled. It’s probably COVID related but chances are it would have been scrubbed because of rain this weekend anyways. The girls were disappointed but they got to go to the regular meeting tonight anyways. I’ll try to make it up to them tomorrow.

I’ve got a lunch meeting with my old boss tomorrow. I have this box of shit that’s been sitting next to my desk since I stepped down. I want to get it to him and catch up with what’s going on. I’m also stopping by a crypto-buddy’s house after that for an hour or two to talk NFTs and DAOs. It should be fun.

Not sure what I’m going to do with the rest of my evening. I’m a bit burned out on Star Atlas and dev stuff, I think I’m going to play some OGame or maybe something in my great unfinished library.

Turning down opportunities

So I’m usually very open and transparent about what is going on in my life here on the blog. I have no filter, basically. I think the only thing I don’t write about is my sex life. And don’t worry, Dear Reader, I’m not about to start now. But there are somethings going on that I feel like I can’t talk about publicly, even in this pseudo-anonymous forum.

Star Atlas released their two new ships today, and staratlas.exchange had a pretty nice haul. Yesterday we had about eight bucks in the wallet, we netted about two hundred bucks today on the two launches. It was a pretty good feeling. That equates to over $600k in orders that were posted through our front end, which is actually a pretty small percentage of orders that were sold today. Atlas Co. made at least $3m on the fighter sale, I haven’t looked a the bomber volume since I wrote this Tweet this AM.

So yea, I’m pretty stoked about it. We’ll need another launch or two this month to pay for our RPC host, but it’s pretty awesome.

I also spent the day working on an update on the exchange to increase the orderbook depth. It was only seven before, and now it’s 99 with a scroll bar that gets auto-set to the middle of the book

Also, Star Atlas updated the PILOT and CAPN badges to be crew members, so I’m in the middle of updating our markets now. This one will involve a symbol change, which means using the Redis key rename script that we used previously. This time on Elasticache. So I’ll be heading up to do that right after this.

Our chart API isn’t holding up very well. I had to restart it after the two launches today. It needs to be made part of a scaling group or something, but I’m trying to keep those costs down as much as possible. I might need to put it behind some sort of caching service or something, but I’ll have to figure that out first. More work for me.

It’s really exciting to be doing this. Every day I’m learning something new. I really learned a lot about React and the HTML DOM today working on the DEX update, and the work isn’t going to stop anytime soon from what I see right now.

Tomorrow is going to be even more exciting. I can’t even talk about it yet. Let me just say that I was messaged by a recruiter on LinkedIn. It was for a PolkaDot project, Rust dev position paying $180k.

I told him I was too busy.

Night writer

Well it has definitely been an interesting day.

First off I stayed up way to late (again). The Star Atlas faction selection kicked off last night and there were bugs with Ledger and Phantom integrations, so I tried to help out with that. After, I watched two episodes of Foundation, and went to bed late, so I got up to a slow start. I knew we had missed the bus so I wound up driving Younger into school. She had a snotty nose, but insisted on going, and I was too tired to fight with her about it, so I took her in.

Big mistake.

Missus had just left the house when I got a call from the school. Younger had a fever of 101 and had a sore throat. FML. I apologized profusely and promised I would start walking to the school to pick her up. I wound up riding my bike, holding hers next to me with one hand as I rode to the school to pick her up. I let her watch as much TV as she wanted. I tried to go back to sleep, but it was useless.

I discovered that Star Atlas had updated information on the two new ship sales, so I needed to update our exchange. With a migraine. One of my blinding migraines where I have blind spots everywhere and can barely see. My scripts weren’t working quite as I wanted them to but I only needed two markets updated, and somehow I managed to get the code deployed. I’m quite astonished myself. It was miserable. But I did it.

We had some really good engagement with this, and might actually make some money at launch if people are actually using our front end to place the orders that I’ve seen up there. We shall see.

I sat in on Metaplex office hours as well, and got some clarifications on the way token metadata works with regard to mints. Answered some difficult questions that I had.

Other than that, I spent some time going over Serum market data regarding the trade data recreation project that I’m obsessed about.

Oh yea, BTC has been making a huge run last couple of days and my Perp positions are at ATH. I could close the position, open since mid-May, and would be in the profit for 1.5x my previous annual salary. And we’re not even close to macro ATH or cycle top, in my opinion, anyways. I’m not closing until I have enough to pay off all my debt, house and school. Taxes complicates that, of course, but I’ll figure that out later.

Faction selection day

Yesterday was pretty productive, even considering the fact that I was dragging ass most of the day. I did get out our SAIAdao weekly update, and I also managed to migrate our serum-history module off of Redis to Elasticache and downgraded our EC2 instance. Spent the rest of the evening watching Metaplex videos, trying to wrap my head around the concepts of master editions and limited edition mints.

I made it to bed on time, started rereading Foundation because of the TV show and went to sleep when I got tired. We had a disaster of a night, both kids wet the beds and Elder threw in a nosebleed for good measure. I couldn’t go back to sleep so I got up and ran three miles, meditated and got Younger off to the bus stop.

I have a tight schedule today. I forgot I have to take my MIL across town today for a medical appointment. I just hope that I can get back before the 1PM town hall that I scheduled yesterday. It might be a bit tight.

Faction selection for Star Atlas starts in several hours as well, so I need to create at least two, maybe three accounts. I have my ‘main’ player account, the SAIAdao assets which I will be farming with as well, and a few resources in my IRA account. I may just sell these instead of trying to make a player account with it. We’ll see.

So there’s a lot going on, I need to spend more time writing code than blog posts, and it doesn’t look like I’m going to get much done in the way of deep work today. I better get to it.

Weekly goals

I’m off to a slow start this morning. I stayed up a bit too late last night so I’ve been dragging ass a bit this morning, a bit scatterbrained. It’s going to be a busy week, and I’m going to need to really focus so that I can execute what we’ve got planned.

Right after I finish writing this I need to get the SAIAdao weekly update out. I don’t think it’ll take quite as long as recent weeks, there’s not a lot to give updates on. The TVL calculation is probably the most complicated part, I don’t think there’s much else that I want to get into about it. One big change is that we’ll start doing office hours, maybe even twice a week. We are getting closer to a tokenomic model, but it’s still a ways off.

Obviously there’s a lot going on with Star Atlas this week with faction selection and the new trailer coming out, but obviously our main concern is going to be the two new ships that are dropping on Thursday. One of my colleagues has sent over some updates to the exchange code so that we can move toward a full automated update and deployment, so I’ll need to turn my attention to that of course. The exchange itself has yet to turn a profit, so one of my big concerns is getting the cost down for our AWS and Solana RPCs as much as possible. That will be later and will involve lots of steps. It’s not going to be fun so I’m probably procrastinating a bit.

And once I knock those things out I will turn my attention to Solana NFTs AKA Metaplex. I want to do some minting and do some experiments to get things rolling along there. I did try to get a head start on the GAN-side of things, but that mostly translated to me trying to mount a hard drive on this laptop and failing to get a Google Images download script to run properly. That will need to wait.

GAN-tastic

“Spent $6500 of my retirement money on a JPG, AMA.”

So last night was pretty interesting. I stumbled across the Singularity NFT project earlier Saturday and was captivated by the art. I set a timer to catch the launch and went about my day.

I did some sleuthing and managed to find the token mint address, and looked over the contract. There was a whitelist for the presale, and a number of functions related to triggering the public sale. So I loaded the contract up in Blocknative.com’s mempool explorer and waited. I was pretty tense, I was limited to minting three at 0.77 ETH each, which is a huge investment for me, but I was determined to pick up one of these.

My other NFT mint experiences haven’t been too good. I’m bagholding my ten CutePigClub pfps, and my Fewmans mint didn’t come out spectacularly well either. Still, I knew I wanted to get one of the Singularity jpgs. The floor on the previous project, Explosions of Color, was 15 ETH at the time, so I’m fairly confident it’ll be a good value.

Watching the mempool on the Singularity launch was pretty interesting as well. There were a number of transactions from people trying to trigger calls that were set to onlyOwner, like turning on the public sale and such. Then, around 6:30, the time the launch was announced, I started seeing mint after mint after mint. All of which failed. By this point my mempool watcher was filtering out everything but the owner’s address. I was watching everything else in Etherscan.

Then the command to start the public sale came through.

I had already connected my wallet to Etherscan and had the mint command queued up. 2.31 ETH to mint three. I pushed send and then stared in disbelief at my Metamask. Insufficient funds. It had an obscene amount of gas listed, the max. I pulled up one of the failed mint transactions to see how much gas it had used, doubled it and threw it in Metamask. (In hindsight, I should have used one of the pre-sales txs to get the amount.) But by then it was too late. I was getting a contract execution failed error in the UI. I checked the website. All of them had been minted.

Apparently, I wasn’t the only one watching the mempool. It had been botted. The Discord server was livid, so I quit it and started watching OpenSea as they started showing up. FOMO kicked in, and I bought the one I have because I was worried the floor was going to get away from me, and I needed to have one. The floor’s come down a bit to around 1.6 ETH or so, I’ve put mine up at five for a week, which seems to be the highest sale price so far. If that sells I’ll buy a couple more floor pieces, maybe something that will make a good pfp at some point.

Anyways, the whole experience really got me thinking. It’s obvious that I’m going to be doing an NFT launch on Solana at some point, I already have several collaborators. This type of abstract GAN art really fascinates me, I’m really curious how the Singularity team trained their AI, and I started doing a bit of research into it last night. I need to gather some reference images and start some testing. There are some Docker containers that I can load up on this laptop and do some testing. Then we can refine things and prepare the actual launch.

I can’t wait to get started.