pull down to refresh

(or for those without ipfs: ipns://multiformats.io/multiaddr/)
In my work on Indra, rather than reinvent the wheel, we are using libp2p(warning: ipfs), to handle the majority of the repetitive parts of building a peer to peer network. Theoretically we can even have our peer list mingle in the IPFS peer list with our protocol magic specified, meaning taking down Indra means also taking down IPFS and all the other protocols joining the party.
Ossification is something that has been discussed a bit recently by that shady JL whose name I shall not otherwise complete, as regards to some hypothetical failure of the decentralised community of bitcoin developers to not do something about.
Multiaddresses are an example of how you solve ossification problems. It's a specific case of a general type of architectural pattern that leaves a system open to future expansion without excessive engineering and working for this future hypothetically not ever going to happen wide adoption.
A big part of it is to go through your protocols, and look at them. What is not being stated in the messages that are passed around about the data your protocol handles?
The multiformats page sums it up well. There is a mess of encoding standards for various types of internet addresses, and several of them collide ambiguously and in many of them, there is assumptions made about the application and protocol version, and so on.
These are obstacles to extending a system. They also slow down the process of development of the tech because first you have to learn the invisible stuff that you can't see that is still there and stopping you adding fields or semantics of context or whatever.
The most important thing about any change we make to Bitcoin has to be this:
"Does this specification make it hard to add versioning or variants to the base without retooling everything that touches it?"
If the answer is yes, you have an incomplete protocol specification, that has one or more ambiguous constructions that possibly may conflict with other protocols and may use terrible labels for things that deceive you about what they are for.
Ossification is not the lack of change in a protocol. It's built-in resistance to change in the architecture, which leads to difficult, repetitive code with a lot of scope for errors in the subtly different variants supposedly doing the same thing with a slightly different data type.
I haven't honestly spent that much time thinking about these sorts of quirks in the protocol, but it's one of the reasons why Bitcoin has done so well is that it doesn't make it hard where it matters, most of the time.
Also, we shouldn't anyway be off and racing to find ways to accommodate new L2s on bitcoin, there should be a bit more caution and time spent in testing. The math, right there in the white paper of Lightning Network, states that block size has to increase to afford every human a personal payment channel.

Obviously we still need to improve Lightning Network before we can say what changes Bitcoin needs to make it more viable.

Or we could cut ourself off at the next turn.
I hope you know IPFS is a shitcoin-minded larp and a terrible thing to compare bitcoin protocol development to.
reply
That's about as meaningful as saying that Microsoft loves C++ and so does Google so don't use their stuff. Wait. Isn't there other things about that junk that make it a bad idea??
reply
You should look into IPFS more.
reply
Stupid beliefs don't always mean stupid code. Look at Holy C and TempleOS.
reply

Appendix 1: Composition, not inheritance

A key difference in the philosophy behind both Unix and the Go language are a concept called composition. Composition is where a language allows you to embed structures and interfaces into other structures and interfaces, and for convenience, where there is no name collision, you can access inner methods as though they were inherited methods. But they are not. And sometimes it's better to be specific, especially for cases where you have two types with colliding methods that really need a different term anyway for the composite action (such as delete on an immutable log, a tombstone rather than erasure).
This is a strong influence on the architecting work done in the IPFS/libp2p/multiaddr codebases and APIs. It is not so familiar and many who are soaked in OOP philosophy are hostile to what seems to be a regression back to C, if you can put it that way. Java programmers and Python programmers are the most likely to understand the idea, really it's just a namespace syntactic sugaring, but it eliminates the rigidity of classes. Lets you make everything read, or write, or persist data, or encode and decode data, even that simple, without having to think about that until you have the thing in front of you, which is much more practical considering how one combinatory change can unsettle a whole ontology. With composition you can make chimeras. To make it sound cool to fantasy/scifi nerds.
reply
multiformats is a terrible idea. Versioning doesn't prevent ossification and just incentivizes the creation of breaking changes that centralize protocols.
reply
The point was not versioning it's disambiguation. Making implicit data explicit.
reply
The math, right there in the white paper of Lightning Network, states that block size has to increase to afford every human a personal payment channel.
Perhaps the number of humans could fall.
reply
I would wish for changes in the math rather than flesh and blood, idk about you.
reply
From the dictionary:
Ossification, also known as osteogenesis or bone mineralization, is the process of laying down new bone material by cells called osteoblasts.1 Bone grows in three stages: first, tissue forms a mesh of collagen fibers, then the body creates a polysaccharide that acts like cement to hold the tissues together, and finally, calcium crystals salts are deposited to form bone.
It's interesting to think of it in this context.
reply
Yeah, I think that the term, like "side effects" kinda has had its meaning diluted in recent years. The notion of side effects was within a serial processing model when it was coined. Not a network connected concurrent system like we have now. Same with ossification, this is infrastructure that we can build on top of. But it needs to be the right shape and suit the gamut of practical possibilities.
Small pieces that are easy to swap out. Well designed interfaces.
reply