To add to ABCbits' answer, a few practical points for a long-lived OTS workflow:
What to archive- The exact original bytes of the PDF. Re-saving or re-exporting it (even "no changes") will change the SHA256 and the proof won't match anymore.
- The upgraded .ots file. Right after stamping, the .ots only contains a "pending" attestation that depends on the calendar server. Once the calendar's transaction is confirmed, run ots upgrade file.pdf.ots. That embeds the full merkle path down to the Bitcoin block header, so the calendar is no longer needed at all. Check the proof shows a BitcoinBlockHeaderAttestation (e.g. with ots info) before you consider it finished.
- Optionally a small text note with the block height, hash algorithm and client/spec version, so a verifier many years later knows what format they are looking at.
Own node vs public verification serviceWith your own node,
ots verify checks the merkle root against a block header your node validated itself, so it's fully trustless. A public verifier/explorer is fine for convenience, but you are trusting them to tell you the correct header. Headers are only 80 bytes each though, so even an SPV-style header chain gets you most of the way without trusting a third party.
Two caveats worth telling the organization:
- Block timestamps are only loosely bound (must be greater than the median of the previous 11 blocks and not more than ~2h ahead of network-adjusted time). So the proof means "this file existed before roughly this time", accurate to a few hours, not to the minute.
- Privacy: the calendars only ever see a hash, and the OTS client adds a per-file nonce before submitting, so a calendar operator can't confirm a guessed document from the hash.