syntax = "proto3"; package rusk; // A serialized `UnprovenTransaction` from the `dusk-wallet-core` crate. message ExecuteProverRequest { bytes utx = 1; } // A Plonk proof for the Execute circuit. message ExecuteProverResponse { bytes proof = 1; } // Request a proof for the STCT circuit. message StctProverRequest { // Serialized in sequence: // - Fee // - Crossover // - Crossover value (u64) // - Crossover blinder (JubJubScalar) // - Contract address (BlsScalar) // - Signature bytes circuit_inputs = 1; } // A Plonk proof for the STCT circuit. message StctProverResponse { bytes proof = 1; } // Request a proof for the STCO circuit. message StcoProverRequest { // Serialized in sequence: // - Value (u64) // - r (JubJubScalar) // - StcoBlinder (JubJubScalar) // - IsPublic (bool as u64 - 0 is false, other is true) // - PublicSpendKey // - pk_r (JubJubAffine) // - Message // - Crossover Blinder (JubJubScalar) // - Crossover // - Fee // - Contract address (BlsScalar) // - Signature bytes circuit_inputs = 1; } // A Plonk proof for the STCO circuit. message StcoProverResponse { bytes proof = 1; } // Request a proof for the WFCT circuit. message WfctProverRequest { // Serialized in sequence: // - Commitment (JubJubAffine) // - Value (u64) // - Blinder (JubJubScalar) bytes circuit_inputs = 1; } // A Plonk proof for the WFCT circuit. message WfctProverResponse { bytes proof = 1; } // Request a proof for the WFCO circuit. message WfcoProverRequest { // Serialized in sequence: // - InputValue (u64) // - InputBlinder (JubJubScalar) // - InputCommitment (JubJubExtended) // - ChangeValue (u64) // - ChangeMessage // - ChangeBlinder (JubJubScalar) // - ChangeR (JubJubScalar) // - IsPublic (bool as u64 - 0 is false, other is true) // - PublicSpendKey // - pk_r (JubJubAffine) // - OutputValue (u64) // - OutputBlinder (JubJubScalar) // - OutputCommitment (JubJubExtended) bytes circuit_inputs = 1; } // A Plonk proof for the WFCO circuit. message WfcoProverResponse { bytes proof = 1; } service Prover { // Proves the unproven transaction by generating a Plonk proof of the // appropriate circuit. rpc ProveExecute(ExecuteProverRequest) returns (ExecuteProverResponse) {} // Send to contract transparent proof request. rpc ProveStct(StctProverRequest) returns (StctProverResponse) {} // Send to contract obfuscated proof request. rpc ProveStco(StcoProverRequest) returns (StcoProverResponse) {} // Withdraw from contract transparent request. rpc ProveWfct(WfctProverRequest) returns (WfctProverResponse) {} // Withdraw from contract obfuscated request. rpc ProveWfco(WfcoProverRequest) returns (WfcoProverResponse) {} }