mirror of
https://github.com/logos-blockchain/logos-blockchain-circuits.git
synced 2026-05-18 23:39:47 +00:00
Finish abstracting CircuitWitnessInput.
This commit is contained in:
parent
c7b5f7ac91
commit
900bee972c
@ -1,22 +1,20 @@
|
||||
use std::path::Path;
|
||||
use lbc_types::{ffi, native::{Bytes, Error}};
|
||||
use lbc_types::inputs::CircuitDat;
|
||||
use lbc_common::string::path_as_null_terminated_string;
|
||||
use crate::ffi::{poc_generate_witness, poc_generate_witness_from_files};
|
||||
|
||||
pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POC_LIB_DIR"), "/witness_generator.dat"));
|
||||
const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POC_LIB_DIR"), "/witness_generator.dat"));
|
||||
|
||||
pub struct PocDat;
|
||||
impl CircuitDat for PocDat {
|
||||
impl lbc_types::CircuitDat for PocDat {
|
||||
const DAT: &'static [u8] = RAW_CIRCUIT_DAT;
|
||||
}
|
||||
|
||||
pub type PocWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, PocDat>;
|
||||
pub type PocWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, PocDat>;
|
||||
|
||||
pub fn generate_witness(
|
||||
input: PocWitnessInput,
|
||||
) -> Result<Bytes, Error> {
|
||||
let input: lbc_types::WitnessInput = input.into();
|
||||
let ffi_input_guard = input.as_ffi();
|
||||
let ffi_input = ffi_input_guard.as_ref();
|
||||
|
||||
|
||||
@ -1,22 +1,20 @@
|
||||
use std::path::Path;
|
||||
use lbc_types::{ffi, native::{Bytes, Error}};
|
||||
use lbc_types::inputs::CircuitDat;
|
||||
use lbc_common::string::path_as_null_terminated_string;
|
||||
use crate::ffi::{pol_generate_witness, pol_generate_witness_from_files};
|
||||
|
||||
pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POL_LIB_DIR"), "/witness_generator.dat"));
|
||||
const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POL_LIB_DIR"), "/witness_generator.dat"));
|
||||
|
||||
pub struct PolDat;
|
||||
impl CircuitDat for PolDat {
|
||||
impl lbc_types::CircuitDat for PolDat {
|
||||
const DAT: &'static [u8] = RAW_CIRCUIT_DAT;
|
||||
}
|
||||
|
||||
pub type PolWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, PolDat>;
|
||||
pub type PolWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, PolDat>;
|
||||
|
||||
pub fn generate_witness(
|
||||
input: PolWitnessInput,
|
||||
) -> Result<Bytes, Error> {
|
||||
let input: lbc_types::WitnessInput = input.into();
|
||||
let ffi_input_guard = input.as_ffi();
|
||||
let ffi_input = ffi_input_guard.as_ref();
|
||||
|
||||
|
||||
@ -1,22 +1,20 @@
|
||||
use std::path::Path;
|
||||
use lbc_types::{ffi, native::{Bytes, Error}};
|
||||
use lbc_types::inputs::CircuitDat;
|
||||
use lbc_common::string::path_as_null_terminated_string;
|
||||
use crate::ffi::{poq_generate_witness, poq_generate_witness_from_files};
|
||||
|
||||
pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POQ_LIB_DIR"), "/witness_generator.dat"));
|
||||
const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POQ_LIB_DIR"), "/witness_generator.dat"));
|
||||
|
||||
pub struct PoqDat;
|
||||
impl CircuitDat for PoqDat {
|
||||
impl lbc_types::CircuitDat for PoqDat {
|
||||
const DAT: &'static [u8] = RAW_CIRCUIT_DAT;
|
||||
}
|
||||
|
||||
pub type PoqWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, PoqDat>;
|
||||
pub type PoqWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, PoqDat>;
|
||||
|
||||
pub fn generate_witness(
|
||||
input: PoqWitnessInput,
|
||||
) -> Result<Bytes, Error> {
|
||||
let input: lbc_types::WitnessInput = input.into();
|
||||
let ffi_input_guard = input.as_ffi();
|
||||
let ffi_input = ffi_input_guard.as_ref();
|
||||
|
||||
|
||||
@ -1,22 +1,20 @@
|
||||
use std::path::Path;
|
||||
use lbc_types::{ffi, native::{Bytes, Error}};
|
||||
use lbc_types::inputs::CircuitDat;
|
||||
use lbc_common::string::path_as_null_terminated_string;
|
||||
use crate::ffi::{signature_generate_witness, signature_generate_witness_from_files};
|
||||
|
||||
pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_SIGNATURE_LIB_DIR"), "/witness_generator.dat"));
|
||||
const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_SIGNATURE_LIB_DIR"), "/witness_generator.dat"));
|
||||
|
||||
pub struct SignatureDat;
|
||||
impl CircuitDat for SignatureDat {
|
||||
impl lbc_types::CircuitDat for SignatureDat {
|
||||
const DAT: &'static [u8] = RAW_CIRCUIT_DAT;
|
||||
}
|
||||
|
||||
pub type SignatureWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, SignatureDat>;
|
||||
pub type SignatureWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, SignatureDat>;
|
||||
|
||||
pub fn generate_witness(
|
||||
input: SignatureWitnessInput,
|
||||
) -> Result<Bytes, Error> {
|
||||
let input: lbc_types::WitnessInput = input.into();
|
||||
let ffi_input_guard = input.as_ffi();
|
||||
let ffi_input = ffi_input_guard.as_ref();
|
||||
|
||||
|
||||
@ -7,39 +7,4 @@
|
||||
pub mod native;
|
||||
pub mod ffi;
|
||||
|
||||
pub use native::witness_input::WitnessInput;
|
||||
|
||||
|
||||
pub mod inputs {
|
||||
use crate::native::Error;
|
||||
use crate::WitnessInput;
|
||||
|
||||
pub trait CircuitDat {
|
||||
const DAT: &'static [u8];
|
||||
}
|
||||
|
||||
// TODO: Remove in favour on native::WitnessInput.
|
||||
pub struct CircuitWitnessInput<'input, Dat> {
|
||||
inner: WitnessInput<'input>,
|
||||
_phantom: std::marker::PhantomData<Dat>
|
||||
}
|
||||
|
||||
impl<'input, Dat: CircuitDat> CircuitWitnessInput<'input, Dat> {
|
||||
pub fn new(inputs_json: String) -> Result<Self, Error> {
|
||||
let inner = WitnessInput::new(Dat::DAT, inputs_json)?;
|
||||
Ok(Self { inner, _phantom: Default::default() })
|
||||
}
|
||||
}
|
||||
|
||||
impl<'input, Dat> From<CircuitWitnessInput<'input, Dat>> for WitnessInput<'input> {
|
||||
fn from(value: CircuitWitnessInput<'input, Dat>) -> Self {
|
||||
value.inner
|
||||
}
|
||||
}
|
||||
|
||||
impl<'input, Dat> From<WitnessInput<'input>> for CircuitWitnessInput<'input, Dat> {
|
||||
fn from(value: WitnessInput<'input>) -> Self {
|
||||
Self { inner: value, _phantom: Default::default() }
|
||||
}
|
||||
}
|
||||
}
|
||||
pub use native::{CircuitDat, CircuitWitnessInput};
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
use std::ops::Deref;
|
||||
use crate::native::{WitnessInput, Error};
|
||||
|
||||
pub trait CircuitDat {
|
||||
const DAT: &'static [u8];
|
||||
}
|
||||
|
||||
pub struct CircuitWitnessInput<'input, Dat> {
|
||||
inner: WitnessInput<'input>,
|
||||
_phantom: std::marker::PhantomData<Dat>
|
||||
}
|
||||
|
||||
impl<'input, Dat: CircuitDat> CircuitWitnessInput<'input, Dat> {
|
||||
pub fn new(inputs_json: String) -> Result<Self, Error> {
|
||||
let inner = WitnessInput::new(Dat::DAT, inputs_json)?;
|
||||
Ok(Self { inner, _phantom: Default::default() })
|
||||
}
|
||||
}
|
||||
|
||||
impl<'input, Dat> From<CircuitWitnessInput<'input, Dat>> for WitnessInput<'input> {
|
||||
fn from(value: CircuitWitnessInput<'input, Dat>) -> Self {
|
||||
value.inner
|
||||
}
|
||||
}
|
||||
|
||||
impl<'input, Dat> From<WitnessInput<'input>> for CircuitWitnessInput<'input, Dat> {
|
||||
fn from(value: WitnessInput<'input>) -> Self {
|
||||
Self { inner: value, _phantom: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'input, Dat> Deref for CircuitWitnessInput<'input, Dat> {
|
||||
type Target = WitnessInput<'input>;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.inner
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,9 @@
|
||||
pub mod bytes;
|
||||
pub mod status;
|
||||
pub mod witness_input;
|
||||
pub mod circuit_witness_input;
|
||||
|
||||
pub use bytes::Bytes;
|
||||
pub use status::{Result, Error};
|
||||
pub use witness_input::WitnessInput;
|
||||
pub use circuit_witness_input::{CircuitDat, CircuitWitnessInput};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user