Constant's avatar
Constant 5 days ago
Not verifying an OTS proof is honestly, extremely retarded. Ive played around with header syncing in the creation of all of this, and it is so damn trivial. The entire header set is less than 80mb at the moment, and for anything nostr related you can just throw away anything more than 4 years old anyway. If shipping 80mb with the app is too much, a header sync with a list of checkpoints is also a matter of seconds. The only issue is web-clients, because they cant really do the p2p thing connecting to bitcoin nodes, but plenty of alternatives there (ultimately getting the data is a trivial problem, and verifying it is trivial as well) Second, within this standard, you dont need to look for proofs, they are just right there in the event assuming the relay serves them as such (the policy event allows relays to signal this, as well as a bunch of other factors among which the delta between the events 'created_at' and the blockheight of the ots proof.) The only reason for publishing separate events for ots-proofs is indexing, which is kinda shitty because it absolutely does not matter who publishes these index events, or at what time etc. Better to just have a server you can ask if they happen to have a proof querying the target digest. Ive build a purpose build server for this and its super efficient. Ive thought about index events, they could still be done, ideally using blossom to store the proofs. Those index events can then just simply be re-optimized by relays or whoever, combining multiple such index events into one. Its just that I think what i have here currently should be enough I hope you take a good look at this. If you have any questions i'd love to answer them.

Replies (2)

Thanks, I'll definitely have to take a look at this. I've been using these 31045 events with the thought that these might eventually get replaced by direct verification, but I have no idea how to go about verifying these proofs in real-time. I basically need every regular event (say k-1, k-6, k-7 etc) that comes into the web client to have a valid OTS proof, meaning that the OTS proof must have a BTC timestamp that falls within some user-set recency window after the created_at of the reference event (e.g 4 hours). Any event that doesn't have such a valid OTS proof must get filtered out and not displayed, as if it had never existed at all. I can't just throw away anything more than 4 years old. This needs to reach back into the past indefinitely. If there is anything I can use for this kind of OTS-based real-time filtering, I'd be very interested to hear about it.