Contract-level Relative Timelocks (or, let's talk about ancestry proofs and singletons)

The Chia coinid also allows a mind-bending approach whose proof size is independent of update history (which is used in their NFT schemes), called a singleton.

I believe the way it works is you identify a coin X as holding the singleton S provided by saying:

  • parent_coin_id = A (extract from coin’s coin id; ~40B)
  • parent’s puzzle = B (extract from parent_coin_id; ~40B)
  • B = singleton_puzzle(singleton_id for S) (same puzzle as self, so ~0B)

Because the parent coin is already mined, you know the singleton_puzzle was satisfied, and the only way the singleton puzzle was satisfied is either recursively, or if the grantparent coin launched the singleton.

(I might have some details wrong there, but I’m pretty sure the gist is right)

1 Like