The varints are then parsed into an untyped message, which contains fields, which are key/value pairs with u128 keys and u128 list values, and a body, which consists of a list of transfer instructions. github.com/ordinals/ord/b…
The untyped message is then parsed into a typed runestone, with typed fields. For example, this parses the "claim" tag, which indicates the rune a runestone wants to mint: github.com/ordinals/ord/b…
If a runestone is malformed, it is marked as a "cenotaph". What is a centoaph? Good question! "A cenotaph is an empty tomb or a monument erected in honour of a person or group of people whose remains are elsewhere." en.wikipedia.org/wiki/Cenotaph
Okay, but what the fuck does that have to do with runes? Also a good question! We want to leave room to upgrade the runes protocol in the future, but we don't want future changes to make it possible to trick unupgraded nodes into thinking that they have runes they don't.
To prevent this, all malformed runestones marked as centoaphs cause all input runes to a transaction with a cenotaph to be burned, and a rune etched in a cenotaph to have its supply set to zero and be unmintable.
This allows us to make upgrades which, as long as unupgraded clients see upgraded runestones as cenotaphs, can't cause an unupgraded client to think it has runes it doesn't, since all input runes to cenotaphs are burned from the viewpoint of the old client.
These are called "cenotaphs" because from the point of view of an unupgraded client, the runes input to a transaction with a centoaph may exist somewhere, but they don't know where. So, a word that refers to an empty tomb seems appropriate.
Many things can cause a runestone to be a cenotaph. Non pushdata opcodes in a runestone OP_RETURN? Centoaph. Unrecognized even tag? Cenotaph. Varint too long? Centoaph. Varint too short? Cenotaph. Mint terms with overflowing supply? Cenotaph.
As a result, writing an alternative rune protocol implementation will be *fraught*. The implementation is already subtle and complex, and I don't think it's a good idea to try to write one.
If you want to integrate runes, you should run ord, and use it to validate incoming blocks and outgoing transactions.
Anyways, we're getting close to actually being done with the protocol, and hope to release it by the end of the week. Back to work!
It looks complicated even if I'm not a dev. I hope you can finish and solve all your problems, what assures us is that now you are more than one person working together to get us something perfect! Good luck to all the devs who help @rodarmor , among whom I know the geniuses @raphjaph and @lifofifo 🫶🏻
@rodarmor Okay, I don’t understand a thing on there but LFG🔥🔥
@rodarmor Does this mean there can be valid runes before the halving or just that the implementation is ready?
@rodarmor Bullish as ever. This is way better than hearing: “almost there, just a few more weeks.”
@rodarmor RatsRunes @Rats_Runes❤️@Bitrats_org