mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-10 15:17:57 -05:00
move halo2 specific types out from zk:: to their own submodule zk::halo2::
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
use darkfi::{
|
||||
zk::{Proof, ProvingKey, Value, Witness, ZkCircuit},
|
||||
zk::{halo2, Proof, ProvingKey, Witness, ZkCircuit},
|
||||
zkas::ZkBinary,
|
||||
Result,
|
||||
};
|
||||
@@ -65,14 +65,14 @@ pub fn make_mint_call(
|
||||
|
||||
// NOTE: It's important to keep these in the same order as the zkas code.
|
||||
let prover_witnesses = vec![
|
||||
Witness::Base(Value::known(dao_proposer_limit)),
|
||||
Witness::Base(Value::known(dao_quorum)),
|
||||
Witness::Base(Value::known(dao_approval_ratio_quot)),
|
||||
Witness::Base(Value::known(dao_approval_ratio_base)),
|
||||
Witness::Base(Value::known(dao.gov_token_id.inner())),
|
||||
Witness::Base(Value::known(pub_x)),
|
||||
Witness::Base(Value::known(pub_y)),
|
||||
Witness::Base(Value::known(dao.bulla_blind)),
|
||||
Witness::Base(halo2::Value::known(dao_proposer_limit)),
|
||||
Witness::Base(halo2::Value::known(dao_quorum)),
|
||||
Witness::Base(halo2::Value::known(dao_approval_ratio_quot)),
|
||||
Witness::Base(halo2::Value::known(dao_approval_ratio_base)),
|
||||
Witness::Base(halo2::Value::known(dao.gov_token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(pub_x)),
|
||||
Witness::Base(halo2::Value::known(pub_y)),
|
||||
Witness::Base(halo2::Value::known(dao.bulla_blind)),
|
||||
];
|
||||
|
||||
let public = vec![dao_bulla];
|
||||
|
||||
@@ -24,7 +24,7 @@ use darkfi_serial::{SerialDecodable, SerialEncodable};
|
||||
use rand::rngs::OsRng;
|
||||
|
||||
use darkfi::{
|
||||
zk::{Proof, ProvingKey, Value, Witness, ZkCircuit},
|
||||
zk::{halo2, Proof, ProvingKey, Witness, ZkCircuit},
|
||||
zkas::ZkBinary,
|
||||
Result,
|
||||
};
|
||||
@@ -96,18 +96,20 @@ impl ProposeCall {
|
||||
let leaf_pos: u64 = input.leaf_position.into();
|
||||
|
||||
let prover_witnesses = vec![
|
||||
Witness::Base(Value::known(input.secret.inner())),
|
||||
Witness::Base(Value::known(note.serial)),
|
||||
Witness::Base(Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(Value::known(pallas::Base::from(note.value))),
|
||||
Witness::Base(Value::known(note.token_id.inner())),
|
||||
Witness::Base(Value::known(note.coin_blind)),
|
||||
Witness::Scalar(Value::known(funds_blind)),
|
||||
Witness::Base(Value::known(gov_token_blind)),
|
||||
Witness::Uint32(Value::known(leaf_pos.try_into().unwrap())),
|
||||
Witness::MerklePath(Value::known(input.merkle_path.clone().try_into().unwrap())),
|
||||
Witness::Base(Value::known(input.signature_secret.inner())),
|
||||
Witness::Base(halo2::Value::known(input.secret.inner())),
|
||||
Witness::Base(halo2::Value::known(note.serial)),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(note.value))),
|
||||
Witness::Base(halo2::Value::known(note.token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(note.coin_blind)),
|
||||
Witness::Scalar(halo2::Value::known(funds_blind)),
|
||||
Witness::Base(halo2::Value::known(gov_token_blind)),
|
||||
Witness::Uint32(halo2::Value::known(leaf_pos.try_into().unwrap())),
|
||||
Witness::MerklePath(halo2::Value::known(
|
||||
input.merkle_path.clone().try_into().unwrap(),
|
||||
)),
|
||||
Witness::Base(halo2::Value::known(input.signature_secret.inner())),
|
||||
];
|
||||
|
||||
let public_key = PublicKey::from_secret(input.secret);
|
||||
@@ -209,28 +211,28 @@ impl ProposeCall {
|
||||
|
||||
let prover_witnesses = vec![
|
||||
// Proposers total number of gov tokens
|
||||
Witness::Base(Value::known(total_funds)),
|
||||
Witness::Scalar(Value::known(total_funds_blinds)),
|
||||
Witness::Base(halo2::Value::known(total_funds)),
|
||||
Witness::Scalar(halo2::Value::known(total_funds_blinds)),
|
||||
// Used for blinding exported gov token ID
|
||||
Witness::Base(Value::known(gov_token_blind)),
|
||||
Witness::Base(halo2::Value::known(gov_token_blind)),
|
||||
// proposal params
|
||||
Witness::Base(Value::known(proposal_dest_x)),
|
||||
Witness::Base(Value::known(proposal_dest_y)),
|
||||
Witness::Base(Value::known(proposal_amount)),
|
||||
Witness::Base(Value::known(self.proposal.serial)),
|
||||
Witness::Base(Value::known(self.proposal.token_id.inner())),
|
||||
Witness::Base(Value::known(self.proposal.blind)),
|
||||
Witness::Base(halo2::Value::known(proposal_dest_x)),
|
||||
Witness::Base(halo2::Value::known(proposal_dest_y)),
|
||||
Witness::Base(halo2::Value::known(proposal_amount)),
|
||||
Witness::Base(halo2::Value::known(self.proposal.serial)),
|
||||
Witness::Base(halo2::Value::known(self.proposal.token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(self.proposal.blind)),
|
||||
// DAO params
|
||||
Witness::Base(Value::known(dao_proposer_limit)),
|
||||
Witness::Base(Value::known(dao_quorum)),
|
||||
Witness::Base(Value::known(dao_approval_ratio_quot)),
|
||||
Witness::Base(Value::known(dao_approval_ratio_base)),
|
||||
Witness::Base(Value::known(self.dao.gov_token_id.inner())),
|
||||
Witness::Base(Value::known(dao_pub_x)),
|
||||
Witness::Base(Value::known(dao_pub_y)),
|
||||
Witness::Base(Value::known(self.dao.bulla_blind)),
|
||||
Witness::Uint32(Value::known(dao_leaf_position.try_into().unwrap())),
|
||||
Witness::MerklePath(Value::known(self.dao_merkle_path.try_into().unwrap())),
|
||||
Witness::Base(halo2::Value::known(dao_proposer_limit)),
|
||||
Witness::Base(halo2::Value::known(dao_quorum)),
|
||||
Witness::Base(halo2::Value::known(dao_approval_ratio_quot)),
|
||||
Witness::Base(halo2::Value::known(dao_approval_ratio_base)),
|
||||
Witness::Base(halo2::Value::known(self.dao.gov_token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(dao_pub_x)),
|
||||
Witness::Base(halo2::Value::known(dao_pub_y)),
|
||||
Witness::Base(halo2::Value::known(self.dao.bulla_blind)),
|
||||
Witness::Uint32(halo2::Value::known(dao_leaf_position.try_into().unwrap())),
|
||||
Witness::MerklePath(halo2::Value::known(self.dao_merkle_path.try_into().unwrap())),
|
||||
];
|
||||
let public_inputs = vec![
|
||||
token_commit,
|
||||
|
||||
@@ -25,7 +25,7 @@ use log::debug;
|
||||
use rand::rngs::OsRng;
|
||||
|
||||
use darkfi::{
|
||||
zk::{Proof, ProvingKey, Value, Witness, ZkCircuit},
|
||||
zk::{halo2, Proof, ProvingKey, Witness, ZkCircuit},
|
||||
zkas::ZkBinary,
|
||||
Result,
|
||||
};
|
||||
@@ -98,18 +98,20 @@ impl Builder {
|
||||
let leaf_pos: u64 = input.leaf_position.into();
|
||||
|
||||
let prover_witnesses = vec![
|
||||
Witness::Base(Value::known(input.secret.inner())),
|
||||
Witness::Base(Value::known(note.serial)),
|
||||
Witness::Base(Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(Value::known(pallas::Base::from(note.value))),
|
||||
Witness::Base(Value::known(note.token_id.inner())),
|
||||
Witness::Base(Value::known(note.coin_blind)),
|
||||
Witness::Scalar(Value::known(vote_value_blind)),
|
||||
Witness::Base(Value::known(gov_token_blind)),
|
||||
Witness::Uint32(Value::known(leaf_pos.try_into().unwrap())),
|
||||
Witness::MerklePath(Value::known(input.merkle_path.clone().try_into().unwrap())),
|
||||
Witness::Base(Value::known(input.signature_secret.inner())),
|
||||
Witness::Base(halo2::Value::known(input.secret.inner())),
|
||||
Witness::Base(halo2::Value::known(note.serial)),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(0))),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(note.value))),
|
||||
Witness::Base(halo2::Value::known(note.token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(note.coin_blind)),
|
||||
Witness::Scalar(halo2::Value::known(vote_value_blind)),
|
||||
Witness::Base(halo2::Value::known(gov_token_blind)),
|
||||
Witness::Uint32(halo2::Value::known(leaf_pos.try_into().unwrap())),
|
||||
Witness::MerklePath(halo2::Value::known(
|
||||
input.merkle_path.clone().try_into().unwrap(),
|
||||
)),
|
||||
Witness::Base(halo2::Value::known(input.signature_secret.inner())),
|
||||
];
|
||||
|
||||
let public_key = PublicKey::from_secret(input.secret);
|
||||
@@ -223,29 +225,29 @@ impl Builder {
|
||||
|
||||
let prover_witnesses = vec![
|
||||
// proposal params
|
||||
Witness::Base(Value::known(proposal_dest_x)),
|
||||
Witness::Base(Value::known(proposal_dest_y)),
|
||||
Witness::Base(Value::known(proposal_amount)),
|
||||
Witness::Base(Value::known(self.proposal.serial)),
|
||||
Witness::Base(Value::known(self.proposal.token_id.inner())),
|
||||
Witness::Base(Value::known(self.proposal.blind)),
|
||||
Witness::Base(halo2::Value::known(proposal_dest_x)),
|
||||
Witness::Base(halo2::Value::known(proposal_dest_y)),
|
||||
Witness::Base(halo2::Value::known(proposal_amount)),
|
||||
Witness::Base(halo2::Value::known(self.proposal.serial)),
|
||||
Witness::Base(halo2::Value::known(self.proposal.token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(self.proposal.blind)),
|
||||
// DAO params
|
||||
Witness::Base(Value::known(dao_proposer_limit)),
|
||||
Witness::Base(Value::known(dao_quorum)),
|
||||
Witness::Base(Value::known(dao_approval_ratio_quot)),
|
||||
Witness::Base(Value::known(dao_approval_ratio_base)),
|
||||
Witness::Base(Value::known(self.dao.gov_token_id.inner())),
|
||||
Witness::Base(Value::known(dao_pub_x)),
|
||||
Witness::Base(Value::known(dao_pub_y)),
|
||||
Witness::Base(Value::known(self.dao.bulla_blind)),
|
||||
Witness::Base(halo2::Value::known(dao_proposer_limit)),
|
||||
Witness::Base(halo2::Value::known(dao_quorum)),
|
||||
Witness::Base(halo2::Value::known(dao_approval_ratio_quot)),
|
||||
Witness::Base(halo2::Value::known(dao_approval_ratio_base)),
|
||||
Witness::Base(halo2::Value::known(self.dao.gov_token_id.inner())),
|
||||
Witness::Base(halo2::Value::known(dao_pub_x)),
|
||||
Witness::Base(halo2::Value::known(dao_pub_y)),
|
||||
Witness::Base(halo2::Value::known(self.dao.bulla_blind)),
|
||||
// Vote
|
||||
Witness::Base(Value::known(pallas::Base::from(vote_option))),
|
||||
Witness::Scalar(Value::known(self.vote.vote_option_blind)),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(vote_option))),
|
||||
Witness::Scalar(halo2::Value::known(self.vote.vote_option_blind)),
|
||||
// Total number of gov tokens allocated
|
||||
Witness::Base(Value::known(pallas::Base::from(vote_value))),
|
||||
Witness::Scalar(Value::known(vote_value_blind)),
|
||||
Witness::Base(halo2::Value::known(pallas::Base::from(vote_value))),
|
||||
Witness::Scalar(halo2::Value::known(vote_value_blind)),
|
||||
// gov token
|
||||
Witness::Base(Value::known(gov_token_blind)),
|
||||
Witness::Base(halo2::Value::known(gov_token_blind)),
|
||||
];
|
||||
|
||||
let public_inputs = vec![
|
||||
|
||||
@@ -30,22 +30,23 @@ pub mod gadget;
|
||||
pub mod proof;
|
||||
pub use proof::{Proof, ProvingKey};
|
||||
|
||||
// I thought about putting this in a sub-module called halo2
|
||||
pub use halo2_proofs::{
|
||||
arithmetic::Field,
|
||||
circuit::{AssignedCell, Layouter, Value},
|
||||
plonk,
|
||||
plonk::{Advice, Assigned, Column},
|
||||
};
|
||||
pub mod halo2 {
|
||||
pub use halo2_proofs::{
|
||||
arithmetic::Field,
|
||||
circuit::{AssignedCell, Layouter, Value},
|
||||
plonk,
|
||||
plonk::{Advice, Assigned, Column},
|
||||
};
|
||||
}
|
||||
|
||||
//pub(in crate::zk) fn assign_free_advice<F: Field, V: Copy>(
|
||||
pub fn assign_free_advice<F: Field, V: Copy>(
|
||||
mut layouter: impl Layouter<F>,
|
||||
column: Column<Advice>,
|
||||
value: Value<V>,
|
||||
) -> Result<AssignedCell<V, F>, plonk::Error>
|
||||
pub fn assign_free_advice<F: halo2::Field, V: Copy>(
|
||||
mut layouter: impl halo2::Layouter<F>,
|
||||
column: halo2::Column<halo2::Advice>,
|
||||
value: halo2::Value<V>,
|
||||
) -> Result<halo2::AssignedCell<V, F>, halo2::plonk::Error>
|
||||
where
|
||||
for<'v> Assigned<F>: From<&'v V>,
|
||||
for<'v> halo2::Assigned<F>: From<&'v V>,
|
||||
{
|
||||
layouter.assign_region(
|
||||
|| "load private",
|
||||
|
||||
Reference in New Issue
Block a user