Skip to main content

OtsClient

Struct OtsClient 

Source
pub struct OtsClient { /* private fields */ }
Available on crate feature timestamps-ots only.
Expand description

OpenTimestamps client for acquiring timestamps.

The client communicates with calendar servers to submit hashes and retrieve timestamp proofs. The proofs are initially “pending” and need to be upgraded later once the Bitcoin transaction is confirmed.

Implementations§

Source§

impl OtsClient

Source

pub fn new() -> Self

Create a new OTS client with default calendar servers.

Source

pub fn with_calendars(calendars: Vec<String>) -> Self

Create a new OTS client with custom calendar servers.

Source

pub fn with_timeout(self, timeout_secs: u64) -> Self

Set the request timeout.

Source

pub async fn acquire_timestamp( &self, document_id: &DocumentId, ) -> Result<TimestampRecord>

Acquire a timestamp for a document.

This submits the document’s hash to an OpenTimestamps calendar server and returns a timestamp record containing the proof.

§Note

The returned timestamp is initially “pending” - it contains a commitment from the calendar server but is not yet anchored to Bitcoin. Use upgrade_timestamp after sufficient time (typically 1-2 hours) to get the full Bitcoin-anchored proof.

§Errors

Returns an error if:

  • No calendar servers are reachable
  • The document ID has an unsupported hash algorithm (must be SHA-256)
  • Network errors occur
Source

pub async fn upgrade_timestamp( &self, timestamp: &TimestampRecord, ) -> Result<UpgradeResult>

Upgrade a pending timestamp to a complete Bitcoin-anchored proof.

This contacts the calendar server to check if the timestamp has been anchored to Bitcoin and returns an upgraded proof if available.

§Note

Bitcoin block confirmation typically takes 10-60 minutes. The calendar servers usually include the hash in a transaction within a few hours. Call this method periodically until the proof is upgraded.

§Errors

Returns an error if:

  • The proof is not yet ready (still pending)
  • Network errors occur
  • The proof format is invalid
Source

pub async fn check_status( &self, timestamp: &TimestampRecord, ) -> Result<TimestampStatus>

Check the status of a timestamp without upgrading.

Returns the current status of the timestamp proof.

§Errors

Returns an error if the timestamp token is invalid.

Source

pub fn verify_timestamp( &self, timestamp: &TimestampRecord, document_id: &DocumentId, ) -> Result<TimestampVerification>

Verify a timestamp proof.

This verifies that the proof is well-formed and, if complete, that it correctly anchors to a Bitcoin block.

§Errors

Returns an error if:

  • The proof format is invalid
  • Verification fails

Trait Implementations§

Source§

impl Clone for OtsClient

Source§

fn clone(&self) -> OtsClient

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OtsClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for OtsClient

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more