diff --git a/src/commit.rs b/src/commit.rs index 86705e1..1b85b3b 100644 --- a/src/commit.rs +++ b/src/commit.rs @@ -1,17 +1,14 @@ -use std::collections::HashMap; - use anyhow::{Error, Result}; use hex::FromHex; -use log::debug; -use sdk_common::pcd::AnkPcdHash; +use sdk_common::pcd::Pcd; use sdk_common::silentpayments::create_transaction; use sdk_common::sp_client::spclient::Recipient; use sdk_common::{error::AnkError, network::CommitMessage}; use sdk_common::sp_client::bitcoin::consensus::deserialize; use sdk_common::sp_client::bitcoin::{Amount, Transaction, Txid, OutPoint}; use sdk_common::process::{Process, ProcessState, CACHEDPROCESSES}; -use serde_json::Value; +use serde_json::{json, Map, Value}; use crate::{lock_freezed_utxos, MutexExt, DAEMON, WALLET}; @@ -19,19 +16,14 @@ pub(crate) fn handle_commit_request(commit_msg: CommitMessage) -> Result(&Vec::from_hex(&commit_msg.init_tx)?) { // This is the first transaction of a chain of commitments - - // Ensure the transaction has only one output - if tx.output.len() != 1 { - return Err(AnkError::NewTxError( - "Transaction must have only one output".to_string(), - ))?; - } + // Create the root commitment outpoint + let root_commitment = OutPoint::new(tx.txid(), 0); // TODO: Check that the output pays us // Validation tokens must be empty for the initial transaction if !commit_msg.validation_tokens.is_empty() { - return Err(AnkError::NewTxError( + return Err(AnkError::GenericError( "Validation tokens must be empty".to_string(), ))?; } @@ -40,16 +32,30 @@ pub(crate) fn handle_commit_request(commit_msg: CommitMessage) -> Result Result(&Vec::from_hex(&commit_msg.init_tx)?) { @@ -80,121 +85,117 @@ pub(crate) fn handle_commit_request(commit_msg: CommitMessage) -> Result