poetapp / node

The core of Po.et
https://docs.poetnetwork.net/
MIT License
194 stars 27 forks source link

Timestamp Receipts — Add Timestamp to Anchor #178

Open lautarodragan opened 6 years ago

lautarodragan commented 6 years ago

We need to support Timestamp Receipts.

RDD: https://github.com/poetapp/documentation/blob/master/rdd/timestamp-receipts.md

Implementation TBD. Could be implemented in poet-node, as well as a separate project. Could run as a script, functions or an API.

geoffturk commented 6 years ago

@lautarodragan I agree with your recommendation. I am putting this in the Mainnet-beta milestone; let me know if you think it should be pushed back into a later release.

geoffturk commented 6 years ago

@lautarodragan @kennylavender Has this task been covered with the recent claim batch work you completed? I read the links in the description at the top and it seems that it has been achieved, but want to double-check this with you before we consider this task closed.

lautarodragan commented 6 years ago

@geoffturk I don’t think so. We still need to address this.

ericelliott commented 6 years ago

Timestamp Receipts are used to verify that a given set of data existed at a point in time by checking the hash of the set of data against a blockchain block.

If we store a hash of the work in a work claim, and that claim is part of a batch, and that batch is hashed on the Bitcoin blockchain (IPFS directory hash is a merkle root of the directory content hashes) -- is that not all the proof we need?

A chainpoint receipt as a JSON-LD document that contains everything you need to prove that a given hash is part of the merkle tree that was hashed to the blockchain, but do we need to provide chainpoint-style receipts?

IMO, they're maybe useful for offline validation of certificates, but wouldn't you still need to confirm that the hash in question is indeed part of a blockchain block? So is there really such thing as true offline validation?

All we really need is to include a deterministically reproducible hash of the contents we want to anchor in a claim. To verify that anchor is valid for a given document:

  1. Hash the file using the deterministic hashing algorithm.
  2. Locate the file on Po.et explorer by the hash. (If you find it, you know the hash matches the file you're searching for).
  3. Pick up the block id from the Po.et explorer.
  4. Make sure that block hash actually exists on the Bitcoin blockchain.

By following those steps, anybody can independently verify with cryptographic proof that the file and corresponding claim existed at the time the Bitcoin block was mined.

lautarodragan commented 6 years ago

@ericelliott that's what I call Solution 1, but it has some complications as stated above.

wdavidturner commented 5 years ago

Fine to leave in here for now, but not actively going to do anything here until Q1.

geoffturk commented 5 years ago

OK. Potential candidate for PML2 milestone when we start it.

lautarodragan commented 5 years ago

Moving to planned, priority tbd with @wdavidturner