Ordinals on Grin

Hi @rodarmor, congrats on Ordinal’s recent success! I’ve been excited to see it come to life. Is anything like that possible on Grin?

1 Like

I think Grin is about the most spam proof chain there is. Where spam is shorthand for inscribed arbitrary data. This is because

  1. Grin is scriptless. So there’s no scripts in which to embed data.

  2. Grin has no addresses. So you can’t embed data in a pretend address. (you can in other hybrid MW chains like Litecoin).

  3. Kernels only allow a few bytes of arbitrary data in past lock heights. If you spread such data over many kernels of one tx, then finding them among a block’s sorted kernels is a challenge.

  4. Outputs only allow some arbitrary data in the rangeproofs, much of which is only retrievable by the owner. Since I don’t understand BPs in detail, someone else will need to say how many bytes could be made publicly visible. It will in any case be a small percentage of the BP size of 674 bytes. And it suffers the same challenge of finding a tx’s outputs among a block’s sorted ones. Finally, it will disappear from most full nodes once the output is spent.


In Grin, the vast majority of bits that land on chain are pseudorandom because they come as a result of a one-way function. This makes it relatively hard to pick arbitrary bytes as you’d need to do PoW on ECC operations.

Not sure about bulletproofs and the free variables there.


I haven’t thought in depth, but I would definitely carefully consider any variable length field, of any kind, as a vector for arbitrary data. I cannot emphasize how much attention Ordinals has gotten, so if someone tried to implement Ordinals for Grin, it wouldn’t even be in the top 100 stupid things that have been done with Ordinals. I am severely bandwidth constrained, but I’ll keep an eye on this thread.

If anyone wants to drop their Discord handle, if I recognize you (probably mostly Grin OGs) I’ll give you the based role on the ordicord after you join, which gives access to the higher signal public channels: discord.gg/ordinals.


I noticed we only touched the inscriptions part. There’s also something to note about ordinals. Unlike in Bitcoin where the inputs and outputs are ordered, in Grin they come in a set. While this is implemented as an ordered list, the noninteractive aggregation prevents you from guaranteeing the order because every aggregation sorts the inputs and outputs again which means you can’t do ordinal-like transfer of nanogrins.


On this subject, I would recommend for the hobby this paper co-authored by Rudolf Ahlswede.

Creating order in sequence spaces with simple machines (1990)