mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-10 07:08:05 -05:00
example/dao: each Vec<Signature> corresponds to ONE function call
This commit is contained in:
@@ -89,7 +89,12 @@ pub async fn example() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -230,7 +235,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -327,7 +337,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins)?;
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([cashier_signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([cashier_signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -454,7 +469,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins)?;
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([cashier_signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([cashier_signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -602,7 +622,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -723,7 +748,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -809,7 +839,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -895,7 +930,12 @@ async fn main() -> Result<()> {
|
||||
let func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![func_call];
|
||||
|
||||
let signatures = sign([signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
//// Validator
|
||||
@@ -1082,7 +1122,12 @@ async fn main() -> Result<()> {
|
||||
let exec_func_call = builder.build(&zk_bins);
|
||||
let func_calls = vec![transfer_func_call, exec_func_call];
|
||||
|
||||
let signatures = sign([tx_signature_secret, exec_signature_secret].to_vec(), &func_calls);
|
||||
let mut signatures = vec![];
|
||||
for func_call in &func_calls {
|
||||
let sign = sign([signature_secret].to_vec(), func_call);
|
||||
signatures.push(sign);
|
||||
}
|
||||
|
||||
let tx = Transaction { func_calls, signatures };
|
||||
|
||||
{
|
||||
|
||||
@@ -140,7 +140,7 @@ impl ZkContractTable {
|
||||
|
||||
pub struct Transaction {
|
||||
pub func_calls: Vec<FuncCall>,
|
||||
pub signatures: Vec<Signature>,
|
||||
pub signatures: Vec<Vec<Signature>>,
|
||||
}
|
||||
|
||||
impl Transaction {
|
||||
@@ -187,12 +187,12 @@ impl Transaction {
|
||||
|
||||
pub fn verify_sigs(&self) {
|
||||
let mut unsigned_tx_data = vec![];
|
||||
for (i, (func_call, signature)) in
|
||||
for (i, (func_call, signatures)) in
|
||||
self.func_calls.iter().zip(self.signatures.clone()).enumerate()
|
||||
{
|
||||
func_call.encode(&mut unsigned_tx_data).expect("failed to encode data");
|
||||
let signature_pub_keys = func_call.call_data.signature_public_keys();
|
||||
for signature_pub_key in signature_pub_keys {
|
||||
for (signature_pub_key, signature) in signature_pub_keys.iter().zip(signatures) {
|
||||
let verify_result = signature_pub_key.verify(&unsigned_tx_data[..], &signature);
|
||||
assert!(verify_result, "verify sigs[{}] failed", i);
|
||||
}
|
||||
@@ -201,12 +201,10 @@ impl Transaction {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn sign(signature_secrets: Vec<SecretKey>, func_calls: &Vec<FuncCall>) -> Vec<Signature> {
|
||||
pub fn sign(signature_secrets: Vec<SecretKey>, func_call: &FuncCall) -> Vec<Signature> {
|
||||
let mut signatures = vec![];
|
||||
let mut unsigned_tx_data = vec![];
|
||||
for (_i, (signature_secret, func_call)) in
|
||||
signature_secrets.iter().zip(func_calls.iter()).enumerate()
|
||||
{
|
||||
for signature_secret in signature_secrets {
|
||||
func_call.encode(&mut unsigned_tx_data).expect("failed to encode data");
|
||||
let signature = signature_secret.sign(&unsigned_tx_data[..]);
|
||||
signatures.push(signature);
|
||||
|
||||
Reference in New Issue
Block a user