2023 Feb 23
I always forget so I’m writing it. Little endian is backwards from normal reading, when storing left→right or top→bottom, the little end is stored first. Big endian is opposite.
I realized a reason people may be so adverse to hard forks is because for the minority of people that might not realize to switch, they can lose money. In a successful soft fork, people’s nodes will automatically abide with the chain with new consensus, even if they will still accept blocks from old consensus.
If a very small portion of the network is fractured off, then it becomes much easier for people to do 51%/eclipse attacks and double spend. Importantly, if someone doesn’t realize they’re on the wrong chain, someone could pay them on the wrong chain, and when they switch to the right chain, they haven’t been paid.
It’s interesting, initially I had been exposed to the difference between hard and soft forks from Vitalik on Lex Fridman’s podcast, and he described soft forks as being coercive like a soft fork changes consensus from underneath people, while hard forks force users to make a choice. But the way I’m seeing it now, people might not be aware they even had to make a choice and end up unintentionally making a choice that costs them money. You need to have a very high certainty that every full node users are exposed to will know to make a deliberate choice in order to hard fork without risking people’s funds, and in a decentralized network, that’s most often not the case.
The weird thing now that I think of it is that even though consensus is different, as long as the same transaction formats are accepted, people could still send and receive transactions from each other even if you’re on different chains, as the transactions would still be broadcasted on the same network, and both could see that the payment went through.
Saw Coinbase launched their new L2. Things like this give me belief that there are people that are working towards the same overall mission of economic empowerment, but genuinely believe in non-Bitcoin methods being the way. That’s cool, and I’ll be happy to see any success that it has.
It’s crazy, I’ve basically switched to Helix and then NeoVim mainly because of YouTube videos. There are so many other ways that my life has been significantly altered by YouTube. On one hand, I am mostly in control of whether and how much I use YouTube, and I’ve been able to utilize it to great benefit. But at the same time, it’s weird to think of how easy it would be for them to influence a massive population of people at the same time. Like they know a group of people that have similar interests as me, and they could just push a couple more NeoVim videos to each of us, and all of a sudden they’ve influence probably thousands of people to switch editors. Thinking of this is rather unsettling. My life generally feels free, but when I look at my behaviors as results of a centralized power, it doesn’t feel very free. I’m understanding more intrinsically the reason for decentralized social media.
In code, planning is often best informed by implementing!
I’m conflicted on debt. It seems like a natural mechanic that would exist in an economy. At the same time the way it’s utilized today seems to lead to unnecessary cycles that risk real suffering. I’m not sure whether it’s because debt should be limited by some sort of regulation, or that there is some outsized factor distorting how abundant debt is.
As a reviewer I am realizing how much nicer it is when PRs are self-contained. And making things easier to review is really helpful.
Checked out how fuzzing actually works in rust-lightning. Pretty cool, it’s mostly autogenerated and they use several different fuzzing tools. Mainly just have to implement your actual test, add a few lines to some config files and run a script. Whenever reviewing new fuzz, I realize I mainly should just look at
fuzz/src
, andfuzz/src/bin
is mostly autogenerated.Learned what x-only pubkeys are. Pubkeys are denoted as their point on the elliptic curve. Because for every x coordinate there only exist 2 y coordinates on the elliptic curve, instead of denoting public keys as both the x and y coordinates, they use a tiebreaker byte 02 or 03 prepended to the x coordinate. X-only just gets rid of this tiebreaker and defaults to the positive point, and it doesn’t make it any less secure!
Changing visibility with conditional compilation in an elegant way is sorta hard. Noticed here the trait was put in a separate module for this sake. Anything is possible with macros however (although still not super elegant)! It’s not that big of a deal though.
Found what it was called for safe overpayment to increase routing success: Boomerang payments! Also stuckless payments is interesting and could accomplish a similar thing.
I’m in this weird spot where I am learning a lot from reviewing a PR, but I have very little to comment or ask. Most of my time spent reviewing is just answering my own questions, and by the end I don’t have much to say lol. Maybe I just need to find PRs where I can be more valuable. Not a big deal.