Procházet zdrojové kódy

contracts: simplyfied signature pubkey vector creation in metadata calls with single singature

aggstam před 3 roky
rodič
revize
489ffb1485

+ 3 - 5
src/contract/consensus/src/entrypoint/proposal_burn_v1.rs

@@ -22,7 +22,7 @@ use darkfi_money_contract::{
 };
 use darkfi_sdk::{
     crypto::{
-        pasta_prelude::*, pedersen_commitment_base, ContractId, PublicKey, CONSENSUS_CONTRACT_ID,
+        pasta_prelude::*, pedersen_commitment_base, ContractId, CONSENSUS_CONTRACT_ID,
         DARK_TOKEN_ID,
     },
     db::{db_contains_key, db_lookup, db_set},
@@ -46,15 +46,15 @@ pub(crate) fn consensus_proposal_burn_get_metadata_v1(
 ) -> Result<Vec<u8>, ContractError> {
     let self_ = &calls[call_idx as usize];
     let params: ConsensusProposalBurnParamsV1 = deserialize(&self_.data[1..])?;
+    let input = &params.input;
 
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys = vec![input.signature_public];
 
     // Grab the pedersen commitments and signature pubkeys from the
     // anonymous input
-    let input = &params.input;
     let value_coords = input.value_commit.to_affine().coordinates().unwrap();
     let token_coords = input.token_commit.to_affine().coordinates().unwrap();
     let (sig_x, sig_y) = input.signature_public.xy();
@@ -77,8 +77,6 @@ pub(crate) fn consensus_proposal_burn_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;

+ 3 - 5
src/contract/consensus/src/entrypoint/proposal_mint_v1.rs

@@ -24,8 +24,8 @@ use darkfi_money_contract::{
 };
 use darkfi_sdk::{
     crypto::{
-        pasta_prelude::*, pedersen_commitment_base, ContractId, MerkleNode, PublicKey,
-        CONSENSUS_CONTRACT_ID, DARK_TOKEN_ID,
+        pasta_prelude::*, pedersen_commitment_base, ContractId, MerkleNode, CONSENSUS_CONTRACT_ID,
+        DARK_TOKEN_ID,
     },
     db::{db_contains_key, db_lookup, db_set},
     error::{ContractError, ContractResult},
@@ -52,7 +52,7 @@ pub(crate) fn consensus_proposal_mint_get_metadata_v1(
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys = vec![params.input.signature_public];
 
     // Grab the pedersen commitment from the anonymous output
     let output = &params.output;
@@ -73,8 +73,6 @@ pub(crate) fn consensus_proposal_mint_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(params.input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;

+ 2 - 4
src/contract/consensus/src/entrypoint/proposal_reward_v1.rs

@@ -20,7 +20,7 @@ use darkfi_money_contract::{error::MoneyError, CONSENSUS_CONTRACT_ZKAS_PROPOSAL_
 use darkfi_sdk::{
     crypto::{
         pasta_prelude::*, pedersen_commitment_base, pedersen_commitment_u64, poseidon_hash,
-        ContractId, PublicKey, CONSENSUS_CONTRACT_ID, DARK_TOKEN_ID,
+        ContractId, CONSENSUS_CONTRACT_ID, DARK_TOKEN_ID,
     },
     error::{ContractError, ContractResult},
     msg,
@@ -52,7 +52,7 @@ pub(crate) fn consensus_proposal_reward_get_metadata_v1(
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys = vec![params.mint_input.signature_public];
 
     // Grab the nullifier for the burnt coin
     let nullifier = &params.burnt_input.nullifier;
@@ -126,8 +126,6 @@ pub(crate) fn consensus_proposal_reward_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(params.mint_input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;

+ 3 - 5
src/contract/consensus/src/entrypoint/stake_v1.rs

@@ -25,8 +25,8 @@ use darkfi_money_contract::{
 };
 use darkfi_sdk::{
     crypto::{
-        pasta_prelude::*, pedersen_commitment_base, ContractId, MerkleNode, PublicKey,
-        CONSENSUS_CONTRACT_ID, DARK_TOKEN_ID, MONEY_CONTRACT_ID,
+        pasta_prelude::*, pedersen_commitment_base, ContractId, MerkleNode, CONSENSUS_CONTRACT_ID,
+        DARK_TOKEN_ID, MONEY_CONTRACT_ID,
     },
     db::{db_contains_key, db_lookup, db_set},
     error::{ContractError, ContractResult},
@@ -50,7 +50,7 @@ pub(crate) fn consensus_stake_get_metadata_v1(
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys = vec![params.input.signature_public];
 
     // Grab the pedersen commitment from the anonymous output
     let output = &params.output;
@@ -68,8 +68,6 @@ pub(crate) fn consensus_stake_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(params.input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;

+ 3 - 5
src/contract/consensus/src/entrypoint/unstake_v1.rs

@@ -24,7 +24,7 @@ use darkfi_money_contract::{
 };
 use darkfi_sdk::{
     crypto::{
-        pasta_prelude::*, pedersen_commitment_base, ContractId, PublicKey, CONSENSUS_CONTRACT_ID,
+        pasta_prelude::*, pedersen_commitment_base, ContractId, CONSENSUS_CONTRACT_ID,
         DARK_TOKEN_ID, MONEY_CONTRACT_ID,
     },
     db::{db_contains_key, db_lookup, db_set},
@@ -45,15 +45,15 @@ pub(crate) fn consensus_unstake_get_metadata_v1(
 ) -> Result<Vec<u8>, ContractError> {
     let self_ = &calls[call_idx as usize];
     let params: ConsensusUnstakeParamsV1 = deserialize(&self_.data[1..])?;
+    let input = &params.input;
 
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys: Vec<PublicKey> = vec![input.signature_public];
 
     // Grab the pedersen commitments and signature pubkeys from the
     // anonymous input
-    let input = &params.input;
     let value_coords = input.value_commit.to_affine().coordinates().unwrap();
     let token_coords = input.token_commit.to_affine().coordinates().unwrap();
     let (sig_x, sig_y) = input.signature_public.xy();
@@ -76,8 +76,6 @@ pub(crate) fn consensus_unstake_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;

+ 3 - 5
src/contract/money/src/entrypoint/stake_v1.rs

@@ -18,7 +18,7 @@
 
 use darkfi_sdk::{
     crypto::{
-        pasta_prelude::*, pedersen_commitment_base, ContractId, PublicKey, CONSENSUS_CONTRACT_ID,
+        pasta_prelude::*, pedersen_commitment_base, ContractId, CONSENSUS_CONTRACT_ID,
         DARK_TOKEN_ID,
     },
     db::{db_contains_key, db_lookup, db_set},
@@ -44,15 +44,15 @@ pub(crate) fn money_stake_get_metadata_v1(
 ) -> Result<Vec<u8>, ContractError> {
     let self_ = &calls[call_idx as usize];
     let params: MoneyStakeParamsV1 = deserialize(&self_.data[1..])?;
+    let input = &params.input;
 
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys = vec![input.signature_public];
 
     // Grab the pedersen commitments and signature pubkeys from the
     // anonymous input
-    let input = &params.input;
     let value_coords = input.value_commit.to_affine().coordinates().unwrap();
     let token_coords = input.token_commit.to_affine().coordinates().unwrap();
     let (sig_x, sig_y) = input.signature_public.xy();
@@ -75,8 +75,6 @@ pub(crate) fn money_stake_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;

+ 1 - 3
src/contract/money/src/entrypoint/unstake_v1.rs

@@ -49,7 +49,7 @@ pub(crate) fn money_unstake_get_metadata_v1(
     // Public inputs for the ZK proofs we have to verify
     let mut zk_public_inputs: Vec<(String, Vec<pallas::Base>)> = vec![];
     // Public keys for the transaction signatures we have to verify
-    let mut signature_pubkeys: Vec<PublicKey> = vec![];
+    let signature_pubkeys = vec![params.input.signature_public];
 
     // Grab the pedersen commitment from the anonymous output
     let output = &params.output;
@@ -67,8 +67,6 @@ pub(crate) fn money_unstake_get_metadata_v1(
         ],
     ));
 
-    signature_pubkeys.push(params.input.signature_public);
-
     // Serialize everything gathered and return it
     let mut metadata = vec![];
     zk_public_inputs.encode(&mut metadata)?;