The Verifier is a specialised Internet Computer (IC) Smart Contract (Canister) designed to verify TLS session proofs and full TLS proofs. It provides both asynchronous and direct verification methods, with the latter including tECDSA signatures for cross-chain or off-chain verification.
yf57k-fyaaa-aaaaj-azw2a-cai
ping
() -> (text) query
verify_proof_direct
(proof_requests: vec text, notary_pub_key: text) -> (DirectVerificationResult)
verify_proof_async
(proof_requests: vec text, notary_pub_key: text) -> (ProofVerificationResponse)
public_key
() -> (record { sec1_pk: text; etherum_pk: text })
verify-local
module, and the tECDSA signatureverify_proof_async
Integrationverify_proof_async
method for proof verification within the Internet Computer (IC) environment. The example includes defining the Candid interface, implementing the async verification call, and handling the verification response.
In your Rust code, you can use the ic_cdk::call
function to make an async call to the Verifier Canister. Here’s how you can do it:
request_proof_verification
function makes an async call to the Verifier Canister using the verify_proof_async
method. It sends the proofs and the notary public key, and awaits the response.
The response is a vector of ProofResponse
objects, which contain the verified proofs.
The async verification process does not utilize a Merkle tree, as it is intended to operate independently within the IC environment.
verify_proof_direct
Integrationverify_proof_direct
interface is used under the hood by the verify-remote
module to precompute over public facets of the TLS proof before sending the remote proof and the private facets of the TLS proof to a zkVM for verification via the verify-local
. In this dynamic, the Verifier will respond with a tECDSA signed Merkle Root hash representing each of the verifications and precomputes performed so that the zkVM can verify that the TLS proofs were prepared in part by a set of honest actors facilitated by the Internet Computer.
In your Rust code, you can use the ic_cdk::call
function to make a direct call to the Verifier Canister. Here’s how you can do it: