Просмотр исходного кода

move nullifier from SDK to money contract

zero 2 лет назад
Родитель
Сommit
3e6e54121d

+ 4 - 3
bin/drk/src/money.rs

@@ -26,15 +26,16 @@ use darkfi::{tx::Transaction, zk::halo2::Field, Error, Result};
 use darkfi_money_contract::{
 use darkfi_money_contract::{
     client::{MoneyNote, OwnCoin},
     client::{MoneyNote, OwnCoin},
     model::{
     model::{
-        Coin, MoneyTokenFreezeParamsV1, MoneyTokenMintParamsV1, MoneyTransferParamsV1, TokenId,
+        Coin, MoneyTokenFreezeParamsV1, MoneyTokenMintParamsV1, MoneyTransferParamsV1, Nullifier,
+        TokenId,
     },
     },
     MoneyFunction,
     MoneyFunction,
 };
 };
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree,
     bridgetree,
     crypto::{
     crypto::{
-        note::AeadEncryptedNote, poseidon_hash, FuncId, Keypair, MerkleNode, MerkleTree, Nullifier,
-        PublicKey, SecretKey, MONEY_CONTRACT_ID,
+        note::AeadEncryptedNote, poseidon_hash, FuncId, Keypair, MerkleNode, MerkleTree, PublicKey,
+        SecretKey, MONEY_CONTRACT_ID,
     },
     },
     pasta::pallas,
     pasta::pallas,
 };
 };

+ 2 - 2
src/contract/dao/src/client/propose.rs

@@ -16,13 +16,13 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
  */
 
 
-use darkfi_money_contract::model::CoinAttributes;
+use darkfi_money_contract::model::{CoinAttributes, Nullifier};
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree,
     bridgetree,
     bridgetree::Hashable,
     bridgetree::Hashable,
     crypto::{
     crypto::{
         note::AeadEncryptedNote, pasta_prelude::*, pedersen::pedersen_commitment_u64,
         note::AeadEncryptedNote, pasta_prelude::*, pedersen::pedersen_commitment_u64,
-        poseidon_hash, FuncId, MerkleNode, Nullifier, PublicKey, SecretKey,
+        poseidon_hash, FuncId, MerkleNode, PublicKey, SecretKey,
     },
     },
     pasta::pallas,
     pasta::pallas,
 };
 };

+ 2 - 2
src/contract/dao/src/client/vote.rs

@@ -16,13 +16,13 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
  */
 
 
-use darkfi_money_contract::model::CoinAttributes;
+use darkfi_money_contract::model::{CoinAttributes, Nullifier};
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree,
     bridgetree,
     bridgetree::Hashable,
     bridgetree::Hashable,
     crypto::{
     crypto::{
         note::ElGamalEncryptedNote, pasta_prelude::*, pedersen_commitment_u64, poseidon_hash,
         note::ElGamalEncryptedNote, pasta_prelude::*, pedersen_commitment_u64, poseidon_hash,
-        util::fv_mod_fp_unsafe, FuncId, Keypair, MerkleNode, Nullifier, PublicKey, SecretKey,
+        util::fv_mod_fp_unsafe, FuncId, Keypair, MerkleNode, PublicKey, SecretKey,
     },
     },
     pasta::pallas,
     pasta::pallas,
 };
 };

+ 2 - 2
src/contract/dao/src/model.rs

@@ -18,12 +18,12 @@
 
 
 use core::str::FromStr;
 use core::str::FromStr;
 
 
-use darkfi_money_contract::model::TokenId;
+use darkfi_money_contract::model::{Nullifier, TokenId};
 use darkfi_sdk::{
 use darkfi_sdk::{
     crypto::{
     crypto::{
         note::{AeadEncryptedNote, ElGamalEncryptedNote},
         note::{AeadEncryptedNote, ElGamalEncryptedNote},
         pasta_prelude::*,
         pasta_prelude::*,
-        poseidon_hash, MerkleNode, Nullifier, PublicKey,
+        poseidon_hash, MerkleNode, PublicKey,
     },
     },
     error::ContractError,
     error::ContractError,
     pasta::pallas,
     pasta::pallas,

+ 6 - 3
src/contract/money/src/client/fee_v1.rs

@@ -31,8 +31,8 @@ use darkfi_sdk::{
     crypto::{
     crypto::{
         note::AeadEncryptedNote,
         note::AeadEncryptedNote,
         pasta_prelude::{Curve, CurveAffine, Field},
         pasta_prelude::{Curve, CurveAffine, Field},
-        pedersen_commitment_u64, poseidon_hash, FuncId, Keypair, MerkleNode, MerkleTree, Nullifier,
-        PublicKey, SecretKey,
+        pedersen_commitment_u64, poseidon_hash, FuncId, Keypair, MerkleNode, MerkleTree, PublicKey,
+        SecretKey,
     },
     },
     pasta::pallas,
     pasta::pallas,
 };
 };
@@ -41,7 +41,10 @@ use rand::rngs::OsRng;
 
 
 use crate::{
 use crate::{
     client::{compute_remainder_blind, Coin, MoneyNote, OwnCoin},
     client::{compute_remainder_blind, Coin, MoneyNote, OwnCoin},
-    model::{CoinAttributes, Input, MoneyFeeParamsV1, NullifierAttributes, Output, DARK_TOKEN_ID},
+    model::{
+        CoinAttributes, Input, MoneyFeeParamsV1, Nullifier, NullifierAttributes, Output,
+        DARK_TOKEN_ID,
+    },
 };
 };
 
 
 /// Append a fee-paying call to the given `TransactionBuilder`.
 /// Append a fee-paying call to the given `TransactionBuilder`.

+ 2 - 2
src/contract/money/src/client/mod.rs

@@ -28,12 +28,12 @@
 
 
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree,
     bridgetree,
-    crypto::{FuncId, Nullifier, SecretKey},
+    crypto::{FuncId, SecretKey},
     pasta::pallas,
     pasta::pallas,
 };
 };
 use darkfi_serial::{async_trait, SerialDecodable, SerialEncodable};
 use darkfi_serial::{async_trait, SerialDecodable, SerialEncodable};
 
 
-use crate::model::{Coin, TokenId};
+use crate::model::{Coin, Nullifier, TokenId};
 
 
 /// `Money::FeeV1` API
 /// `Money::FeeV1` API
 pub mod fee_v1;
 pub mod fee_v1;

+ 2 - 4
src/contract/money/src/client/transfer_v1/builder.rs

@@ -22,9 +22,7 @@ use darkfi::{
 };
 };
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree,
     bridgetree,
-    crypto::{
-        note::AeadEncryptedNote, pasta_prelude::*, MerkleNode, Nullifier, PublicKey, SecretKey,
-    },
+    crypto::{note::AeadEncryptedNote, pasta_prelude::*, MerkleNode, PublicKey, SecretKey},
     pasta::pallas,
     pasta::pallas,
 };
 };
 use log::{debug, info};
 use log::{debug, info};
@@ -33,7 +31,7 @@ use rand::rngs::OsRng;
 use super::proof::{create_transfer_burn_proof, create_transfer_mint_proof};
 use super::proof::{create_transfer_burn_proof, create_transfer_mint_proof};
 use crate::{
 use crate::{
     client::{compute_remainder_blind, MoneyNote, OwnCoin},
     client::{compute_remainder_blind, MoneyNote, OwnCoin},
-    model::{ClearInput, CoinAttributes, Input, MoneyTransferParamsV1, Output, TokenId},
+    model::{ClearInput, CoinAttributes, Input, MoneyTransferParamsV1, Nullifier, Output, TokenId},
 };
 };
 
 
 /// Struct holding necessary information to build a `Money::TransferV1` contract call.
 /// Struct holding necessary information to build a `Money::TransferV1` contract call.

+ 3 - 3
src/contract/money/src/client/transfer_v1/proof.rs

@@ -24,8 +24,8 @@ use darkfi::{
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree::Hashable,
     bridgetree::Hashable,
     crypto::{
     crypto::{
-        pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, FuncId, MerkleNode, Nullifier,
-        PublicKey, SecretKey,
+        pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, FuncId, MerkleNode, PublicKey,
+        SecretKey,
     },
     },
     pasta::pallas,
     pasta::pallas,
 };
 };
@@ -33,7 +33,7 @@ use log::debug;
 use rand::rngs::OsRng;
 use rand::rngs::OsRng;
 
 
 use super::{TransferCallInput, TransferCallOutput};
 use super::{TransferCallInput, TransferCallOutput};
-use crate::model::{Coin, CoinAttributes, NullifierAttributes};
+use crate::model::{Coin, CoinAttributes, Nullifier, NullifierAttributes};
 
 
 pub struct TransferMintRevealed {
 pub struct TransferMintRevealed {
     pub coin: Coin,
     pub coin: Coin,

+ 5 - 1
src/contract/money/src/model/mod.rs

@@ -19,7 +19,7 @@
 use darkfi_sdk::{
 use darkfi_sdk::{
     crypto::{
     crypto::{
         ecvrf::VrfProof, note::AeadEncryptedNote, pasta_prelude::PrimeField, poseidon_hash, FuncId,
         ecvrf::VrfProof, note::AeadEncryptedNote, pasta_prelude::PrimeField, poseidon_hash, FuncId,
-        MerkleNode, Nullifier, PublicKey, SecretKey,
+        MerkleNode, PublicKey, SecretKey,
     },
     },
     error::ContractError,
     error::ContractError,
     pasta::pallas,
     pasta::pallas,
@@ -29,6 +29,10 @@ use darkfi_serial::{SerialDecodable, SerialEncodable};
 #[cfg(feature = "client")]
 #[cfg(feature = "client")]
 use darkfi_serial::async_trait;
 use darkfi_serial::async_trait;
 
 
+/// Nullifier definitions
+pub mod nullifier;
+pub use nullifier::Nullifier;
+
 /// Token ID definitions and methods
 /// Token ID definitions and methods
 pub mod token_id;
 pub mod token_id;
 pub use token_id::{TokenId, DARK_TOKEN_ID};
 pub use token_id::{TokenId, DARK_TOKEN_ID};

+ 6 - 7
src/sdk/src/crypto/nullifier.rs → src/contract/money/src/model/nullifier.rs

@@ -16,12 +16,11 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
  */
 
 
-#[cfg(feature = "async")]
-use darkfi_serial::async_trait;
+use darkfi_sdk::{crypto::pasta_prelude::PrimeField, error::ContractError, pasta::pallas};
 use darkfi_serial::{SerialDecodable, SerialEncodable};
 use darkfi_serial::{SerialDecodable, SerialEncodable};
-use pasta_curves::{group::ff::PrimeField, pallas};
 
 
-use crate::error::ContractError;
+#[cfg(feature = "client")]
+use darkfi_serial::async_trait;
 
 
 /// The `Nullifier` is represented as a base field element.
 /// The `Nullifier` is represented as a base field element.
 #[repr(C)]
 #[repr(C)]
@@ -49,6 +48,6 @@ impl Nullifier {
 }
 }
 
 
 use core::str::FromStr;
 use core::str::FromStr;
-crate::fp_from_bs58!(Nullifier);
-crate::fp_to_bs58!(Nullifier);
-crate::ty_from_fp!(Nullifier);
+darkfi_sdk::fp_from_bs58!(Nullifier);
+darkfi_sdk::fp_to_bs58!(Nullifier);
+darkfi_sdk::ty_from_fp!(Nullifier);

+ 2 - 2
src/contract/test-harness/src/lib.rs

@@ -30,13 +30,13 @@ use darkfi::{
 use darkfi_dao_contract::model::{DaoBulla, DaoProposalBulla};
 use darkfi_dao_contract::model::{DaoBulla, DaoProposalBulla};
 use darkfi_money_contract::{
 use darkfi_money_contract::{
     client::{MoneyNote, OwnCoin},
     client::{MoneyNote, OwnCoin},
-    model::{Coin, Output},
+    model::{Coin, Nullifier, Output},
 };
 };
 use darkfi_sdk::{
 use darkfi_sdk::{
     bridgetree,
     bridgetree,
     crypto::{
     crypto::{
         note::AeadEncryptedNote, pasta_prelude::Field, poseidon_hash, ContractId, Keypair,
         note::AeadEncryptedNote, pasta_prelude::Field, poseidon_hash, ContractId, Keypair,
-        MerkleNode, MerkleTree, Nullifier, PublicKey, SecretKey,
+        MerkleNode, MerkleTree, PublicKey, SecretKey,
     },
     },
     pasta::pallas,
     pasta::pallas,
 };
 };

+ 0 - 4
src/sdk/src/crypto/mod.rs

@@ -45,10 +45,6 @@ pub use merkle_node::{MerkleNode, MerkleTree};
 /// Note encryption
 /// Note encryption
 pub mod note;
 pub mod note;
 
 
-/// Nullifier definitions
-pub mod nullifier;
-pub use nullifier::Nullifier;
-
 /// Pedersen commitment utilities
 /// Pedersen commitment utilities
 pub mod pedersen;
 pub mod pedersen;
 pub use pedersen::{pedersen_commitment_base, pedersen_commitment_u64};
 pub use pedersen::{pedersen_commitment_base, pedersen_commitment_u64};