coin.rs 752 B

123456789101112131415161718192021222324252627
  1. use darkfi_sdk::crypto::Nullifier;
  2. use darkfi_serial::{SerialDecodable, SerialEncodable};
  3. use pasta_curves::{group::ff::PrimeField, pallas};
  4. use super::{keypair::SecretKey, note::Note};
  5. #[derive(Clone, Copy, PartialEq, Eq, Debug, SerialEncodable, SerialDecodable)]
  6. pub struct Coin(pub pallas::Base);
  7. impl Coin {
  8. pub fn from_bytes(bytes: [u8; 32]) -> Self {
  9. pallas::Base::from_repr(bytes).map(Coin).unwrap()
  10. }
  11. pub fn to_bytes(self) -> [u8; 32] {
  12. self.0.to_repr()
  13. }
  14. }
  15. #[derive(Clone, Debug, PartialEq, Eq, SerialEncodable, SerialDecodable)]
  16. pub struct OwnCoin {
  17. pub coin: Coin,
  18. pub note: Note,
  19. pub secret: SecretKey,
  20. pub nullifier: Nullifier,
  21. pub leaf_position: incrementalmerkletree::Position,
  22. }