mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2024-10-01 05:45:40 +00:00
52b9a78de2
In order for the re-construction of TxLock to be meaningful, we limit `Message2` to the PSBT instead of the full struct. This is a breaking change in the network layer. The PSBT is valid if: - It has at most two outputs (we allow a change output) - One of the outputs pays the agreed upon amount to a shared output script Resolves #260.
64 lines
1.8 KiB
Rust
64 lines
1.8 KiB
Rust
use crate::{bitcoin, monero};
|
|
use conquer_once::Lazy;
|
|
use ecdsa_fun::fun::marker::Mark;
|
|
use serde::{Deserialize, Serialize};
|
|
use sha2::Sha256;
|
|
use sigma_fun::ext::dl_secp256k1_ed25519_eq::{CrossCurveDLEQ, CrossCurveDLEQProof};
|
|
use sigma_fun::HashTranscript;
|
|
|
|
pub mod alice;
|
|
pub mod bob;
|
|
|
|
pub static CROSS_CURVE_PROOF_SYSTEM: Lazy<
|
|
CrossCurveDLEQ<HashTranscript<Sha256, rand_chacha::ChaCha20Rng>>,
|
|
> = Lazy::new(|| {
|
|
CrossCurveDLEQ::<HashTranscript<Sha256, rand_chacha::ChaCha20Rng>>::new(
|
|
(*ecdsa_fun::fun::G).mark::<ecdsa_fun::fun::marker::Normal>(),
|
|
curve25519_dalek::constants::ED25519_BASEPOINT_POINT,
|
|
)
|
|
});
|
|
|
|
#[derive(Debug, Copy, Clone)]
|
|
pub struct StartingBalances {
|
|
pub xmr: monero::Amount,
|
|
pub btc: bitcoin::Amount,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct Message0 {
|
|
B: bitcoin::PublicKey,
|
|
S_b_monero: monero::PublicKey,
|
|
S_b_bitcoin: bitcoin::PublicKey,
|
|
dleq_proof_s_b: CrossCurveDLEQProof,
|
|
v_b: monero::PrivateViewKey,
|
|
refund_address: bitcoin::Address,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct Message1 {
|
|
A: bitcoin::PublicKey,
|
|
S_a_monero: monero::PublicKey,
|
|
S_a_bitcoin: bitcoin::PublicKey,
|
|
dleq_proof_s_a: CrossCurveDLEQProof,
|
|
v_a: monero::PrivateViewKey,
|
|
redeem_address: bitcoin::Address,
|
|
punish_address: bitcoin::Address,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct Message2 {
|
|
psbt: bitcoin::PartiallySignedTransaction,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct Message3 {
|
|
tx_cancel_sig: bitcoin::Signature,
|
|
tx_refund_encsig: bitcoin::EncryptedSignature,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct Message4 {
|
|
tx_punish_sig: bitcoin::Signature,
|
|
tx_cancel_sig: bitcoin::Signature,
|
|
}
|