diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9cf3eac7..5f8f265e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,13 +6,9 @@ "service": "app", "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", // Use 'mounts' to make the cargo cache persistent in a Docker Volume. - // "mounts": [ - // { - // "source": "devcontainer-cargo-cache-${devcontainerId}", - // "target": "/usr/local/cargo", - // "type": "volume" - // } - // ] + "mounts": [ + "source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached" + ], // Use 'postCreateCommand' to run commands after the container is created. "postStartCommand": "rustup --version && rustup component add rustfmt && rustup component add clippy", // Configure tool-specific properties. diff --git a/src/asynch/clients/json_rpc/mod.rs b/src/asynch/clients/json_rpc/mod.rs index 9c5ac0ea..be3d8b9b 100644 --- a/src/asynch/clients/json_rpc/mod.rs +++ b/src/asynch/clients/json_rpc/mod.rs @@ -1,4 +1,3 @@ - use alloc::{string::ToString, vec}; use serde::Serialize; use serde_json::{Map, Value}; diff --git a/src/core/binarycodec/mod.rs b/src/core/binarycodec/mod.rs index e85e38c4..820c0557 100644 --- a/src/core/binarycodec/mod.rs +++ b/src/core/binarycodec/mod.rs @@ -23,7 +23,7 @@ use crate::XRPLSerdeJsonError; use super::exceptions::XRPLCoreResult; const TRANSACTION_SIGNATURE_PREFIX: i32 = 0x53545800; -const TRANSACTION_MULTISIG_PREFIX: i32 = 0x534D5400; +const TRANSACTION_MULTISIG_PREFIX: [u8; 4] = (0x534D5400u32).to_be_bytes(); pub fn encode(signed_transaction: &T) -> XRPLCoreResult where @@ -55,7 +55,7 @@ where serialize_json( prepared_transaction, - Some(TRANSACTION_MULTISIG_PREFIX.to_be_bytes().as_ref()), + Some(TRANSACTION_MULTISIG_PREFIX.as_ref()), Some(signing_account_id.as_ref()), true, ) diff --git a/src/models/requests/submit_multisigned.rs b/src/models/requests/submit_multisigned.rs index 913539c9..35cc182f 100644 --- a/src/models/requests/submit_multisigned.rs +++ b/src/models/requests/submit_multisigned.rs @@ -23,6 +23,7 @@ pub struct SubmitMultisigned<'a> { /// The common fields shared by all requests. #[serde(flatten)] pub common_fields: CommonFields<'a>, + pub tx_json: serde_json::Value, /// If true, and the transaction fails locally, do not /// retry or relay the transaction to other servers. pub fail_hard: Option, @@ -41,13 +42,18 @@ impl<'a> Request<'a> for SubmitMultisigned<'a> { } impl<'a> SubmitMultisigned<'a> { - pub fn new(id: Option>, fail_hard: Option) -> Self { + pub fn new( + id: Option>, + tx_json: serde_json::Value, + fail_hard: Option, + ) -> Self { Self { common_fields: CommonFields { command: RequestMethod::SubmitMultisigned, id, }, fail_hard, + tx_json, } } } diff --git a/src/models/transactions/account_delete.rs b/src/models/transactions/account_delete.rs index 21137256..afc98177 100644 --- a/src/models/transactions/account_delete.rs +++ b/src/models/transactions/account_delete.rs @@ -68,29 +68,29 @@ impl<'a> AccountDelete<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, destination: Cow<'a, str>, destination_tag: Option, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::AccountDelete, + TransactionType::AccountDelete, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), destination, destination_tag, } @@ -116,7 +116,7 @@ mod test_serde { "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe".into(), Some(13), ); - let default_json_str = r#"{"Account":"rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm","TransactionType":"AccountDelete","Fee":"2000000","Flags":0,"Sequence":2470665,"Destination":"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe","DestinationTag":13}"#; + let default_json_str = r#"{"Account":"rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm","TransactionType":"AccountDelete","Fee":"2000000","Flags":0,"Sequence":2470665,"SigningPubKey":"","Destination":"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe","DestinationTag":13}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/account_set.rs b/src/models/transactions/account_set.rs index 226c0715..1b95b057 100644 --- a/src/models/transactions/account_set.rs +++ b/src/models/transactions/account_set.rs @@ -281,7 +281,7 @@ impl<'a> AccountSet<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, clear_flag: Option, @@ -294,22 +294,22 @@ impl<'a> AccountSet<'a> { nftoken_minter: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::AccountSet, + TransactionType::AccountSet, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), clear_flag, domain, email_hash, @@ -558,7 +558,7 @@ mod tests { None, None, ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"AccountSet","Fee":"12","Flags":0,"Sequence":5,"Domain":"6578616D706C652E636F6D","MessageKey":"03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB","SetFlag":5}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"AccountSet","Fee":"12","Flags":0,"Sequence":5,"SigningPubKey":"","Domain":"6578616D706C652E636F6D","MessageKey":"03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB","SetFlag":5}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/amm_bid.rs b/src/models/transactions/amm_bid.rs index f1bd49bb..520f561f 100644 --- a/src/models/transactions/amm_bid.rs +++ b/src/models/transactions/amm_bid.rs @@ -65,7 +65,7 @@ impl<'a> AMMBid<'_> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, asset: Currency<'a>, @@ -75,22 +75,22 @@ impl<'a> AMMBid<'_> { auth_accounts: Option>, ) -> AMMBid<'a> { AMMBid { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::AMMBid, + TransactionType::AMMBid, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), asset, asset2, bid_min, diff --git a/src/models/transactions/amm_create.rs b/src/models/transactions/amm_create.rs index dfc5a4fd..b0fe8d79 100644 --- a/src/models/transactions/amm_create.rs +++ b/src/models/transactions/amm_create.rs @@ -75,7 +75,7 @@ impl<'a> AMMCreate<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -83,22 +83,22 @@ impl<'a> AMMCreate<'a> { trading_fee: u16, ) -> AMMCreate<'a> { AMMCreate { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::AMMCreate, + TransactionType::AMMCreate, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, amount2, trading_fee, diff --git a/src/models/transactions/amm_delete.rs b/src/models/transactions/amm_delete.rs index 2755dabc..4afd2fc0 100644 --- a/src/models/transactions/amm_delete.rs +++ b/src/models/transactions/amm_delete.rs @@ -54,29 +54,29 @@ impl<'a> AMMDelete<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, asset: Currency<'a>, asset2: Currency<'a>, ) -> AMMDelete<'a> { AMMDelete { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::AMMDelete, + TransactionType::AMMDelete, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), asset, asset2, } diff --git a/src/models/transactions/amm_deposit.rs b/src/models/transactions/amm_deposit.rs index 7c2ae8d4..911379c9 100644 --- a/src/models/transactions/amm_deposit.rs +++ b/src/models/transactions/amm_deposit.rs @@ -104,7 +104,7 @@ impl<'a> AMMDeposit<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, asset: Currency<'a>, @@ -115,22 +115,22 @@ impl<'a> AMMDeposit<'a> { lp_token_out: Option>, ) -> AMMDeposit<'a> { AMMDeposit { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::AMMDeposit, + TransactionType::AMMDeposit, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), asset, asset2, amount, diff --git a/src/models/transactions/amm_vote.rs b/src/models/transactions/amm_vote.rs index 120a112a..f37cb749 100644 --- a/src/models/transactions/amm_vote.rs +++ b/src/models/transactions/amm_vote.rs @@ -70,7 +70,7 @@ impl<'a> AMMVote<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, asset: Currency<'a>, @@ -78,22 +78,22 @@ impl<'a> AMMVote<'a> { trading_fee: Option, ) -> AMMVote<'a> { AMMVote { - common_fields: CommonFields { + common_fields: CommonFields::new( account, + TransactionType::AMMVote, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - transaction_type: TransactionType::AMMVote, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), asset, asset2, trading_fee, diff --git a/src/models/transactions/amm_withdraw.rs b/src/models/transactions/amm_withdraw.rs index f8ccaf85..c6deaaa6 100644 --- a/src/models/transactions/amm_withdraw.rs +++ b/src/models/transactions/amm_withdraw.rs @@ -92,7 +92,7 @@ impl<'a> AMMWithdraw<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, asset: Currency<'a>, @@ -103,22 +103,22 @@ impl<'a> AMMWithdraw<'a> { lp_token_in: Option>, ) -> Self { AMMWithdraw { - common_fields: CommonFields { + common_fields: CommonFields::new( account, + TransactionType::AMMWithdraw, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - transaction_type: TransactionType::AMMWithdraw, - }, + None, + ), asset, asset2, amount, diff --git a/src/models/transactions/check_cancel.rs b/src/models/transactions/check_cancel.rs index 52520864..3f814261 100644 --- a/src/models/transactions/check_cancel.rs +++ b/src/models/transactions/check_cancel.rs @@ -63,28 +63,28 @@ impl<'a> CheckCancel<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, check_id: Cow<'a, str>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::CheckCancel, + TransactionType::CheckCancel, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), check_id, } } @@ -108,7 +108,7 @@ mod tests { None, "49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0".into(), ); - let default_json_str = r#"{"Account":"rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo","TransactionType":"CheckCancel","Fee":"12","Flags":0,"CheckID":"49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0"}"#; + let default_json_str = r#"{"Account":"rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo","TransactionType":"CheckCancel","Fee":"12","Flags":0,"SigningPubKey":"","CheckID":"49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/check_cash.rs b/src/models/transactions/check_cash.rs index 6083f343..9b832261 100644 --- a/src/models/transactions/check_cash.rs +++ b/src/models/transactions/check_cash.rs @@ -90,7 +90,7 @@ impl<'a> CheckCash<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, check_id: Cow<'a, str>, @@ -98,22 +98,22 @@ impl<'a> CheckCash<'a> { deliver_min: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::CheckCash, + TransactionType::CheckCash, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), check_id, amount, deliver_min, @@ -176,7 +176,7 @@ mod tests { Some("100000000".into()), None, ); - let default_json_str = r#"{"Account":"rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy","TransactionType":"CheckCash","Fee":"12","Flags":0,"CheckID":"838766BA2B995C00744175F69A1B11E32C3DBC40E64801A4056FCBD657F57334","Amount":"100000000"}"#; + let default_json_str = r#"{"Account":"rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy","TransactionType":"CheckCash","Fee":"12","Flags":0,"SigningPubKey":"","CheckID":"838766BA2B995C00744175F69A1B11E32C3DBC40E64801A4056FCBD657F57334","Amount":"100000000"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/check_create.rs b/src/models/transactions/check_create.rs index 44b7b6bf..61e7484c 100644 --- a/src/models/transactions/check_create.rs +++ b/src/models/transactions/check_create.rs @@ -74,7 +74,7 @@ impl<'a> CheckCreate<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, destination: Cow<'a, str>, @@ -84,22 +84,22 @@ impl<'a> CheckCreate<'a> { invoice_id: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::CheckCreate, + TransactionType::CheckCreate, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), destination, send_max, destination_tag, @@ -131,7 +131,7 @@ mod tests { Some(570113521), Some("6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B".into()), ); - let default_json_str = r#"{"Account":"rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo","TransactionType":"CheckCreate","Fee":"12","Flags":0,"Destination":"rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy","SendMax":"100000000","DestinationTag":1,"Expiration":570113521,"InvoiceID":"6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B"}"#; + let default_json_str = r#"{"Account":"rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo","TransactionType":"CheckCreate","Fee":"12","Flags":0,"SigningPubKey":"","Destination":"rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy","SendMax":"100000000","DestinationTag":1,"Expiration":570113521,"InvoiceID":"6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/deposit_preauth.rs b/src/models/transactions/deposit_preauth.rs index 703d0340..e8bd5993 100644 --- a/src/models/transactions/deposit_preauth.rs +++ b/src/models/transactions/deposit_preauth.rs @@ -81,29 +81,29 @@ impl<'a> DepositPreauth<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, authorize: Option>, unauthorize: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::DepositPreauth, + TransactionType::DepositPreauth, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), authorize, unauthorize, } @@ -164,7 +164,7 @@ mod tests { Some("rEhxGqkqPPSxQ3P25J66ft5TwpzV14k2de".into()), None, ); - let default_json_str = r#"{"Account":"rsUiUMpnrgxQp24dJYZDhmV4bE3aBtQyt8","TransactionType":"DepositPreauth","Fee":"10","Flags":0,"Sequence":2,"Authorize":"rEhxGqkqPPSxQ3P25J66ft5TwpzV14k2de"}"#; + let default_json_str = r#"{"Account":"rsUiUMpnrgxQp24dJYZDhmV4bE3aBtQyt8","TransactionType":"DepositPreauth","Fee":"10","Flags":0,"Sequence":2,"SigningPubKey":"","Authorize":"rEhxGqkqPPSxQ3P25J66ft5TwpzV14k2de"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/escrow_cancel.rs b/src/models/transactions/escrow_cancel.rs index 0a4a3b8f..e307ed58 100644 --- a/src/models/transactions/escrow_cancel.rs +++ b/src/models/transactions/escrow_cancel.rs @@ -62,29 +62,29 @@ impl<'a> EscrowCancel<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, owner: Cow<'a, str>, offer_sequence: u32, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::EscrowCancel, + TransactionType::EscrowCancel, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), owner, offer_sequence, } @@ -110,7 +110,7 @@ mod tests { "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn".into(), 7, ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"EscrowCancel","Flags":0,"Owner":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","OfferSequence":7}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"EscrowCancel","Flags":0,"SigningPubKey":"","Owner":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","OfferSequence":7}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/escrow_create.rs b/src/models/transactions/escrow_create.rs index 1562191d..8ee31493 100644 --- a/src/models/transactions/escrow_create.rs +++ b/src/models/transactions/escrow_create.rs @@ -103,7 +103,7 @@ impl<'a> EscrowCreate<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: XRPAmount<'a>, @@ -114,22 +114,22 @@ impl<'a> EscrowCreate<'a> { finish_after: Option, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::EscrowCreate, + TransactionType::EscrowCreate, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, destination, destination_tag, @@ -207,7 +207,7 @@ mod tests { Some(23480), Some(533171558), ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"EscrowCreate","Flags":0,"SourceTag":11747,"Amount":"10000","Destination":"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW","DestinationTag":23480,"CancelAfter":533257958,"FinishAfter":533171558,"Condition":"A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100"}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"EscrowCreate","Flags":0,"SigningPubKey":"","SourceTag":11747,"Amount":"10000","Destination":"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW","DestinationTag":23480,"CancelAfter":533257958,"FinishAfter":533171558,"Condition":"A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/escrow_finish.rs b/src/models/transactions/escrow_finish.rs index 61777cf0..1cb74129 100644 --- a/src/models/transactions/escrow_finish.rs +++ b/src/models/transactions/escrow_finish.rs @@ -89,7 +89,7 @@ impl<'a> EscrowFinish<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, owner: Cow<'a, str>, @@ -98,22 +98,22 @@ impl<'a> EscrowFinish<'a> { fulfillment: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::EscrowFinish, + TransactionType::EscrowFinish, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), owner, offer_sequence, condition, @@ -188,7 +188,7 @@ mod tests { ), Some("A0028000".into()), ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"EscrowFinish","Flags":0,"Owner":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","OfferSequence":7,"Condition":"A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100","Fulfillment":"A0028000"}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"EscrowFinish","Flags":0,"SigningPubKey":"","Owner":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","OfferSequence":7,"Condition":"A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100","Fulfillment":"A0028000"}"#; // Serialize let default_json_value: Value = serde_json::from_str(default_json_str).unwrap(); // let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/mod.rs b/src/models/transactions/mod.rs index 598d55f5..22043760 100644 --- a/src/models/transactions/mod.rs +++ b/src/models/transactions/mod.rs @@ -181,7 +181,7 @@ where /// payment, or a sender on whose behalf this transaction is /// made. Conventionally, a refund should specify the initial /// payment's SourceTag as the refund payment's DestinationTag. - pub signers: Option>>, + pub signers: Option>, /// Hex representation of the public key that corresponds to the /// private key used to sign this transaction. If an empty string, /// indicates a multi-signature is present in the Signers field instead. @@ -214,7 +214,7 @@ where memos: Option>, network_id: Option, sequence: Option, - signers: Option>>, + signers: Option>, signing_pub_key: Option>, source_tag: Option, ticket_sequence: Option, @@ -231,7 +231,7 @@ where network_id, sequence, signers, - signing_pub_key, + signing_pub_key: Some(signing_pub_key.unwrap_or("".into())), source_tag, ticket_sequence, txn_signature, @@ -309,18 +309,19 @@ serde_with_tag! { } } +serde_with_tag! { /// One Signer in a multi-signature. A multi-signed transaction /// can have an array of up to 8 Signers, each contributing a /// signature, in the Signers field. /// /// See Signers Field: /// `` -#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default, Clone, new)] -#[serde(rename_all = "PascalCase")] -pub struct Signer<'a> { - pub account: Cow<'a, str>, - pub txn_signature: Cow<'a, str>, - pub signing_pub_key: Cow<'a, str>, +#[derive(Debug, PartialEq, Eq, Default, Clone, new)] +pub struct Signer { + pub account: String, + pub txn_signature: String, + pub signing_pub_key: String, +} } /// Standard functions for transactions. diff --git a/src/models/transactions/nftoken_accept_offer.rs b/src/models/transactions/nftoken_accept_offer.rs index fa11af45..d4c6f991 100644 --- a/src/models/transactions/nftoken_accept_offer.rs +++ b/src/models/transactions/nftoken_accept_offer.rs @@ -113,7 +113,7 @@ impl<'a> NFTokenAcceptOffer<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, nftoken_sell_offer: Option>, @@ -121,22 +121,22 @@ impl<'a> NFTokenAcceptOffer<'a> { nftoken_broker_fee: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::NFTokenAcceptOffer, + TransactionType::NFTokenAcceptOffer, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), nftoken_sell_offer, nftoken_buy_offer, nftoken_broker_fee, @@ -246,7 +246,7 @@ mod tests { None, None, ); - let default_json_str = r#"{"Account":"r9spUPhPBfB6kQeF6vPhwmtFwRhBh2JUCG","TransactionType":"NFTokenAcceptOffer","Fee":"12","Flags":0,"LastLedgerSequence":75447550,"Memos":[{"Memo":{"MemoData":"61356534373538372D633134322D346663382D616466362D393666383562356435386437","MemoFormat":null,"MemoType":null}}],"Sequence":68549302,"NFTokenSellOffer":"68CD1F6F906494EA08C9CB5CAFA64DFA90D4E834B7151899B73231DE5A0C3B77"}"#; + let default_json_str = r#"{"Account":"r9spUPhPBfB6kQeF6vPhwmtFwRhBh2JUCG","TransactionType":"NFTokenAcceptOffer","Fee":"12","Flags":0,"LastLedgerSequence":75447550,"Memos":[{"Memo":{"MemoData":"61356534373538372D633134322D346663382D616466362D393666383562356435386437","MemoFormat":null,"MemoType":null}}],"Sequence":68549302,"SigningPubKey":"","NFTokenSellOffer":"68CD1F6F906494EA08C9CB5CAFA64DFA90D4E834B7151899B73231DE5A0C3B77"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/nftoken_burn.rs b/src/models/transactions/nftoken_burn.rs index d38a63e6..33e9a546 100644 --- a/src/models/transactions/nftoken_burn.rs +++ b/src/models/transactions/nftoken_burn.rs @@ -70,29 +70,29 @@ impl<'a> NFTokenBurn<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, nftoken_id: Cow<'a, str>, owner: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::NFTokenBurn, + TransactionType::NFTokenBurn, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), nftoken_id, owner, } @@ -118,7 +118,7 @@ mod tests { "000B013A95F14B0044F78A264E41713C64B5F89242540EE208C3098E00000D65".into(), Some("rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B".into()), ); - let default_json_str = r#"{"Account":"rNCFjv8Ek5oDrNiMJ3pw6eLLFtMjZLJnf2","TransactionType":"NFTokenBurn","Fee":"10","Flags":0,"NFTokenID":"000B013A95F14B0044F78A264E41713C64B5F89242540EE208C3098E00000D65","Owner":"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"}"#; + let default_json_str = r#"{"Account":"rNCFjv8Ek5oDrNiMJ3pw6eLLFtMjZLJnf2","TransactionType":"NFTokenBurn","Fee":"10","Flags":0,"SigningPubKey":"","NFTokenID":"000B013A95F14B0044F78A264E41713C64B5F89242540EE208C3098E00000D65","Owner":"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/nftoken_cancel_offer.rs b/src/models/transactions/nftoken_cancel_offer.rs index 98a14e2e..e48ecd58 100644 --- a/src/models/transactions/nftoken_cancel_offer.rs +++ b/src/models/transactions/nftoken_cancel_offer.rs @@ -89,28 +89,28 @@ impl<'a> NFTokenCancelOffer<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, nftoken_offers: Vec>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::NFTokenCancelOffer, + TransactionType::NFTokenCancelOffer, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), nftoken_offers, } } @@ -171,7 +171,7 @@ mod tests { None, vec!["9C92E061381C1EF37A8CDE0E8FC35188BFC30B1883825042A64309AC09F4C36D".into()], ); - let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"NFTokenCancelOffer","Flags":0,"NFTokenOffers":["9C92E061381C1EF37A8CDE0E8FC35188BFC30B1883825042A64309AC09F4C36D"]}"#; + let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"NFTokenCancelOffer","Flags":0,"SigningPubKey":"","NFTokenOffers":["9C92E061381C1EF37A8CDE0E8FC35188BFC30B1883825042A64309AC09F4C36D"]}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/nftoken_create_offer.rs b/src/models/transactions/nftoken_create_offer.rs index 65270544..7295b7be 100644 --- a/src/models/transactions/nftoken_create_offer.rs +++ b/src/models/transactions/nftoken_create_offer.rs @@ -168,7 +168,7 @@ impl<'a> NFTokenCreateOffer<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -178,22 +178,22 @@ impl<'a> NFTokenCreateOffer<'a> { owner: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::NFTokenCreateOffer, + TransactionType::NFTokenCreateOffer, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), nftoken_id, amount, owner, @@ -351,7 +351,7 @@ mod tests { None, None, ); - let default_json_str = r#"{"Account":"rs8jBmmfpwgmrSPgwMsh7CvKRmRt1JTVSX","TransactionType":"NFTokenCreateOffer","Flags":1,"NFTokenID":"000100001E962F495F07A990F4ED55ACCFEEF365DBAA76B6A048C0A200000007","Amount":"1000000"}"#; + let default_json_str = r#"{"Account":"rs8jBmmfpwgmrSPgwMsh7CvKRmRt1JTVSX","TransactionType":"NFTokenCreateOffer","Flags":1,"SigningPubKey":"","NFTokenID":"000100001E962F495F07A990F4ED55ACCFEEF365DBAA76B6A048C0A200000007","Amount":"1000000"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/nftoken_mint.rs b/src/models/transactions/nftoken_mint.rs index ea5e7591..d76e2bb4 100644 --- a/src/models/transactions/nftoken_mint.rs +++ b/src/models/transactions/nftoken_mint.rs @@ -173,7 +173,7 @@ impl<'a> NFTokenMint<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, nftoken_taxon: u32, @@ -182,22 +182,22 @@ impl<'a> NFTokenMint<'a> { uri: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::NFTokenMint, + TransactionType::NFTokenMint, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), nftoken_taxon, issuer, transfer_fee, @@ -321,7 +321,7 @@ mod tests { Some(314), Some("697066733A2F2F62616679626569676479727A74357366703775646D37687537367568377932366E6634646675796C71616266336F636C67747179353566627A6469".into()), ); - let default_json_str = r#"{"Account":"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B","TransactionType":"NFTokenMint","Fee":"10","Flags":8,"Memos":[{"Memo":{"MemoData":"72656E74","MemoFormat":null,"MemoType":"687474703A2F2F6578616D706C652E636F6D2F6D656D6F2F67656E65726963"}}],"NFTokenTaxon":0,"TransferFee":314,"URI":"697066733A2F2F62616679626569676479727A74357366703775646D37687537367568377932366E6634646675796C71616266336F636C67747179353566627A6469"}"#; + let default_json_str = r#"{"Account":"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B","TransactionType":"NFTokenMint","Fee":"10","Flags":8,"Memos":[{"Memo":{"MemoData":"72656E74","MemoFormat":null,"MemoType":"687474703A2F2F6578616D706C652E636F6D2F6D656D6F2F67656E65726963"}}],"SigningPubKey":"","NFTokenTaxon":0,"TransferFee":314,"URI":"697066733A2F2F62616679626569676479727A74357366703775646D37687537367568377932366E6634646675796C71616266336F636C67747179353566627A6469"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/offer_cancel.rs b/src/models/transactions/offer_cancel.rs index f71c03f1..361fc51d 100644 --- a/src/models/transactions/offer_cancel.rs +++ b/src/models/transactions/offer_cancel.rs @@ -65,28 +65,28 @@ impl<'a> OfferCancel<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, offer_sequence: u32, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::OfferCancel, + TransactionType::OfferCancel, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), offer_sequence, } } @@ -110,7 +110,7 @@ mod tests { None, 6, ); - let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"OfferCancel","Fee":"12","Flags":0,"LastLedgerSequence":7108629,"Sequence":7,"OfferSequence":6}"#; + let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"OfferCancel","Fee":"12","Flags":0,"LastLedgerSequence":7108629,"Sequence":7,"SigningPubKey":"","OfferSequence":6}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/offer_create.rs b/src/models/transactions/offer_create.rs index 78252e8a..ad6e4995 100644 --- a/src/models/transactions/offer_create.rs +++ b/src/models/transactions/offer_create.rs @@ -108,7 +108,7 @@ impl<'a> OfferCreate<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, taker_gets: Amount<'a>, @@ -117,22 +117,22 @@ impl<'a> OfferCreate<'a> { offer_sequence: Option, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::OfferCreate, + TransactionType::OfferCreate, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), taker_gets, taker_pays, expiration, @@ -230,7 +230,7 @@ mod tests { None, None, ); - let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"OfferCreate","Fee":"12","Flags":0,"LastLedgerSequence":7108682,"Sequence":8,"TakerGets":"6000000","TakerPays":{"currency":"GKO","issuer":"ruazs5h1qEsqpke88pcqnaseXdm6od2xc","value":"2"}}"#; + let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"OfferCreate","Fee":"12","Flags":0,"LastLedgerSequence":7108682,"Sequence":8,"SigningPubKey":"","TakerGets":"6000000","TakerPays":{"currency":"GKO","issuer":"ruazs5h1qEsqpke88pcqnaseXdm6od2xc","value":"2"}}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/payment.rs b/src/models/transactions/payment.rs index b8db993c..374880a7 100644 --- a/src/models/transactions/payment.rs +++ b/src/models/transactions/payment.rs @@ -196,7 +196,7 @@ impl<'a> Payment<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -208,22 +208,22 @@ impl<'a> Payment<'a> { send_max: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::Payment, + TransactionType::Payment, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, destination, destination_tag, @@ -406,7 +406,7 @@ mod tests { None, None, ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"Payment","Fee":"12","Flags":131072,"Sequence":2,"Amount":{"currency":"USD","issuer":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","value":"1"},"Destination":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"Payment","Fee":"12","Flags":131072,"Sequence":2,"SigningPubKey":"","Amount":{"currency":"USD","issuer":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","value":"1"},"Destination":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/payment_channel_claim.rs b/src/models/transactions/payment_channel_claim.rs index b75f4b08..f430c293 100644 --- a/src/models/transactions/payment_channel_claim.rs +++ b/src/models/transactions/payment_channel_claim.rs @@ -117,7 +117,7 @@ impl<'a> PaymentChannelClaim<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, channel: Cow<'a, str>, @@ -127,22 +127,22 @@ impl<'a> PaymentChannelClaim<'a> { signature: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::PaymentChannelClaim, + TransactionType::PaymentChannelClaim, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), channel, balance, amount, @@ -175,7 +175,7 @@ mod tests { Some("32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A".into()), Some("30440220718D264EF05CAED7C781FF6DE298DCAC68D002562C9BF3A07C1E721B420C0DAB02203A5A4779EF4D2CCC7BC3EF886676D803A9981B928D3B8ACA483B80ECA3CD7B9B".into()), ); - let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"PaymentChannelClaim","Flags":0,"Channel":"C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198","Balance":"1000000","Amount":"1000000","Signature":"30440220718D264EF05CAED7C781FF6DE298DCAC68D002562C9BF3A07C1E721B420C0DAB02203A5A4779EF4D2CCC7BC3EF886676D803A9981B928D3B8ACA483B80ECA3CD7B9B","PublicKey":"32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A"}"#; + let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"PaymentChannelClaim","Flags":0,"SigningPubKey":"","Channel":"C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198","Balance":"1000000","Amount":"1000000","Signature":"30440220718D264EF05CAED7C781FF6DE298DCAC68D002562C9BF3A07C1E721B420C0DAB02203A5A4779EF4D2CCC7BC3EF886676D803A9981B928D3B8ACA483B80ECA3CD7B9B","PublicKey":"32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/payment_channel_create.rs b/src/models/transactions/payment_channel_create.rs index afa2e072..b5079734 100644 --- a/src/models/transactions/payment_channel_create.rs +++ b/src/models/transactions/payment_channel_create.rs @@ -82,7 +82,7 @@ impl<'a> PaymentChannelCreate<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: XRPAmount<'a>, @@ -93,22 +93,22 @@ impl<'a> PaymentChannelCreate<'a> { destination_tag: Option, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::PaymentChannelCreate, + TransactionType::PaymentChannelCreate, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, destination, settle_delay, @@ -142,7 +142,7 @@ mod tests { Some(533171558), Some(23480), ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"PaymentChannelCreate","Flags":0,"SourceTag":11747,"Amount":"10000","Destination":"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW","SettleDelay":86400,"PublicKey":"32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A","CancelAfter":533171558,"DestinationTag":23480}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"PaymentChannelCreate","Flags":0,"SigningPubKey":"","SourceTag":11747,"Amount":"10000","Destination":"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW","SettleDelay":86400,"PublicKey":"32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A","CancelAfter":533171558,"DestinationTag":23480}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/payment_channel_fund.rs b/src/models/transactions/payment_channel_fund.rs index d573c006..ec268787 100644 --- a/src/models/transactions/payment_channel_fund.rs +++ b/src/models/transactions/payment_channel_fund.rs @@ -74,7 +74,7 @@ impl<'a> PaymentChannelFund<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: XRPAmount<'a>, @@ -82,22 +82,22 @@ impl<'a> PaymentChannelFund<'a> { expiration: Option, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::PaymentChannelFund, + TransactionType::PaymentChannelFund, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, channel, expiration, @@ -127,7 +127,7 @@ mod tests { "C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198".into(), Some(543171558), ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"PaymentChannelFund","Flags":0,"Amount":"200000","Channel":"C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198","Expiration":543171558}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"PaymentChannelFund","Flags":0,"SigningPubKey":"","Amount":"200000","Channel":"C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198","Expiration":543171558}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/pseudo_transactions/enable_amendment.rs b/src/models/transactions/pseudo_transactions/enable_amendment.rs index f439e02c..8f739fda 100644 --- a/src/models/transactions/pseudo_transactions/enable_amendment.rs +++ b/src/models/transactions/pseudo_transactions/enable_amendment.rs @@ -79,29 +79,29 @@ impl<'a> EnableAmendment<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amendment: Cow<'a, str>, ledger_sequence: u32, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::EnableAmendment, + TransactionType::EnableAmendment, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amendment, ledger_sequence, } diff --git a/src/models/transactions/pseudo_transactions/set_fee.rs b/src/models/transactions/pseudo_transactions/set_fee.rs index 6d49deff..719875ad 100644 --- a/src/models/transactions/pseudo_transactions/set_fee.rs +++ b/src/models/transactions/pseudo_transactions/set_fee.rs @@ -63,7 +63,7 @@ impl<'a> SetFee<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, base_fee: XRPAmount<'a>, @@ -73,22 +73,22 @@ impl<'a> SetFee<'a> { ledger_sequence: u32, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::SetFee, + TransactionType::SetFee, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), base_fee, reference_fee_units, reserve_base, diff --git a/src/models/transactions/pseudo_transactions/unl_modify.rs b/src/models/transactions/pseudo_transactions/unl_modify.rs index 0168c6f7..59c5bc67 100644 --- a/src/models/transactions/pseudo_transactions/unl_modify.rs +++ b/src/models/transactions/pseudo_transactions/unl_modify.rs @@ -72,7 +72,7 @@ impl<'a> UNLModify<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, ledger_sequence: u32, @@ -80,22 +80,22 @@ impl<'a> UNLModify<'a> { unlmodify_validator: Cow<'a, str>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::UNLModify, + TransactionType::UNLModify, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), ledger_sequence, unlmodify_disabling, unlmodify_validator, diff --git a/src/models/transactions/set_regular_key.rs b/src/models/transactions/set_regular_key.rs index 1f6aa3c8..fc2d6e45 100644 --- a/src/models/transactions/set_regular_key.rs +++ b/src/models/transactions/set_regular_key.rs @@ -69,28 +69,28 @@ impl<'a> SetRegularKey<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, regular_key: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::SetRegularKey, + TransactionType::SetRegularKey, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), regular_key, } } @@ -114,7 +114,7 @@ mod tests { None, Some("rAR8rR8sUkBoCZFawhkWzY4Y5YoyuznwD".into()), ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"SetRegularKey","Fee":"12","Flags":0,"RegularKey":"rAR8rR8sUkBoCZFawhkWzY4Y5YoyuznwD"}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"SetRegularKey","Fee":"12","Flags":0,"SigningPubKey":"","RegularKey":"rAR8rR8sUkBoCZFawhkWzY4Y5YoyuznwD"}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/signer_list_set.rs b/src/models/transactions/signer_list_set.rs index eca56e79..e2780347 100644 --- a/src/models/transactions/signer_list_set.rs +++ b/src/models/transactions/signer_list_set.rs @@ -180,29 +180,29 @@ impl<'a> SignerListSet<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, signer_quorum: u32, signer_entries: Option>, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::SignerListSet, + TransactionType::SignerListSet, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), signer_quorum, signer_entries, } @@ -397,7 +397,7 @@ mod tests { SignerEntry::new("raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n".to_string(), 1), ]), ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"SignerListSet","Fee":"12","Flags":0,"SignerQuorum":3,"SignerEntries":[{"SignerEntry":{"Account":"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW","SignerWeight":2}},{"SignerEntry":{"Account":"rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v","SignerWeight":1}},{"SignerEntry":{"Account":"raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n","SignerWeight":1}}]}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"SignerListSet","Fee":"12","Flags":0,"SigningPubKey":"","SignerQuorum":3,"SignerEntries":[{"SignerEntry":{"Account":"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW","SignerWeight":2}},{"SignerEntry":{"Account":"rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v","SignerWeight":1}},{"SignerEntry":{"Account":"raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n","SignerWeight":1}}]}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/ticket_create.rs b/src/models/transactions/ticket_create.rs index 3daf3506..1387c0ab 100644 --- a/src/models/transactions/ticket_create.rs +++ b/src/models/transactions/ticket_create.rs @@ -63,28 +63,28 @@ impl<'a> TicketCreate<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, ticket_count: u32, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::TicketCreate, + TransactionType::TicketCreate, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), ticket_count, } } @@ -108,7 +108,7 @@ mod tests { None, 10, ); - let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"TicketCreate","Fee":"10","Flags":0,"Sequence":381,"TicketCount":10}"#; + let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"TicketCreate","Fee":"10","Flags":0,"Sequence":381,"SigningPubKey":"","TicketCount":10}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/trust_set.rs b/src/models/transactions/trust_set.rs index 05bf6994..0aeb0ce1 100644 --- a/src/models/transactions/trust_set.rs +++ b/src/models/transactions/trust_set.rs @@ -99,7 +99,7 @@ impl<'a> TrustSet<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, limit_amount: IssuedCurrencyAmount<'a>, @@ -107,22 +107,22 @@ impl<'a> TrustSet<'a> { quality_out: Option, ) -> Self { Self { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::TrustSet, + TransactionType::TrustSet, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), limit_amount, quality_in, quality_out, @@ -156,7 +156,7 @@ mod tests { None, None, ); - let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"TrustSet","Fee":"12","Flags":262144,"LastLedgerSequence":8007750,"Sequence":12,"LimitAmount":{"currency":"USD","issuer":"rsP3mgGb2tcYUrxiLFiHJiQXhsziegtwBc","value":"100"}}"#; + let default_json_str = r#"{"Account":"ra5nK24KXen9AHvsdFTKHSANinZseWnPcX","TransactionType":"TrustSet","Fee":"12","Flags":262144,"LastLedgerSequence":8007750,"Sequence":12,"SigningPubKey":"","LimitAmount":{"currency":"USD","issuer":"rsP3mgGb2tcYUrxiLFiHJiQXhsziegtwBc","value":"100"}}"#; // Serialize let default_json_value = serde_json::to_value(default_json_str).unwrap(); let serialized_string = serde_json::to_string(&default_txn).unwrap(); diff --git a/src/models/transactions/xchain_account_create_commit.rs b/src/models/transactions/xchain_account_create_commit.rs index bfa57f81..9ec934e7 100644 --- a/src/models/transactions/xchain_account_create_commit.rs +++ b/src/models/transactions/xchain_account_create_commit.rs @@ -45,7 +45,7 @@ impl<'a> XChainAccountCreateCommit<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -54,22 +54,22 @@ impl<'a> XChainAccountCreateCommit<'a> { signature_reward: Option>, ) -> XChainAccountCreateCommit<'a> { XChainAccountCreateCommit { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainAccountCreateCommit, + TransactionType::XChainAccountCreateCommit, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, destination, xchain_bridge, diff --git a/src/models/transactions/xchain_add_account_create_attestation.rs b/src/models/transactions/xchain_add_account_create_attestation.rs index 28c49fac..d3f080fe 100644 --- a/src/models/transactions/xchain_add_account_create_attestation.rs +++ b/src/models/transactions/xchain_add_account_create_attestation.rs @@ -51,7 +51,7 @@ impl<'a> XChainAddAccountCreateAttestation<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -67,22 +67,22 @@ impl<'a> XChainAddAccountCreateAttestation<'a> { xchain_bridge: XChainBridge<'a>, ) -> XChainAddAccountCreateAttestation<'a> { XChainAddAccountCreateAttestation { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainAddAccountCreateAttestation, + TransactionType::XChainAddAccountCreateAttestation, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, attestation_reward_account, attestation_signer_account, diff --git a/src/models/transactions/xchain_add_claim_attestation.rs b/src/models/transactions/xchain_add_claim_attestation.rs index c082baec..674aa5f9 100644 --- a/src/models/transactions/xchain_add_claim_attestation.rs +++ b/src/models/transactions/xchain_add_claim_attestation.rs @@ -50,7 +50,7 @@ impl<'a> XChainAddClaimAttestation<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -65,22 +65,22 @@ impl<'a> XChainAddClaimAttestation<'a> { destination: Option>, ) -> XChainAddClaimAttestation<'a> { XChainAddClaimAttestation { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainAddClaimAttestation, + TransactionType::XChainAddClaimAttestation, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, attestation_reward_account, attestation_signer_account, diff --git a/src/models/transactions/xchain_claim.rs b/src/models/transactions/xchain_claim.rs index 1d5a2ee0..03a54411 100644 --- a/src/models/transactions/xchain_claim.rs +++ b/src/models/transactions/xchain_claim.rs @@ -53,7 +53,7 @@ impl<'a> XChainClaim<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -63,22 +63,22 @@ impl<'a> XChainClaim<'a> { destination_tag: Option, ) -> XChainClaim<'a> { XChainClaim { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainClaim, + TransactionType::XChainClaim, account_txn_id, fee, + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - flags: FlagCollection::default(), - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, destination, xchain_bridge, diff --git a/src/models/transactions/xchain_commit.rs b/src/models/transactions/xchain_commit.rs index 9e817b5e..507a1c09 100644 --- a/src/models/transactions/xchain_commit.rs +++ b/src/models/transactions/xchain_commit.rs @@ -44,7 +44,7 @@ impl<'a> XChainCommit<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, amount: Amount<'a>, @@ -53,22 +53,22 @@ impl<'a> XChainCommit<'a> { other_chain_destination: Option>, ) -> XChainCommit<'a> { XChainCommit { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainCommit, + TransactionType::XChainCommit, account_txn_id, fee, + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - flags: FlagCollection::default(), - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), amount, other_chain_destination, xchain_bridge, diff --git a/src/models/transactions/xchain_create_bridge.rs b/src/models/transactions/xchain_create_bridge.rs index 013f711f..03492275 100644 --- a/src/models/transactions/xchain_create_bridge.rs +++ b/src/models/transactions/xchain_create_bridge.rs @@ -52,7 +52,7 @@ impl<'a> XChainCreateBridge<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, signature_reward: Amount<'a>, @@ -60,22 +60,22 @@ impl<'a> XChainCreateBridge<'a> { min_account_create_amount: Option>, ) -> XChainCreateBridge<'a> { XChainCreateBridge { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainCreateBridge, + TransactionType::XChainCreateBridge, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), signature_reward, xchain_bridge, min_account_create_amount, diff --git a/src/models/transactions/xchain_create_claim_id.rs b/src/models/transactions/xchain_create_claim_id.rs index 5dad09f3..bd474729 100644 --- a/src/models/transactions/xchain_create_claim_id.rs +++ b/src/models/transactions/xchain_create_claim_id.rs @@ -52,7 +52,7 @@ impl<'a> XChainCreateClaimID<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, other_chain_source: Cow<'a, str>, @@ -60,22 +60,22 @@ impl<'a> XChainCreateClaimID<'a> { xchain_bridge: XChainBridge<'a>, ) -> XChainCreateClaimID<'a> { XChainCreateClaimID { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainCreateClaimID, + TransactionType::XChainCreateClaimID, account_txn_id, fee, - flags: FlagCollection::default(), + Some(FlagCollection::default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), other_chain_source, signature_reward, xchain_bridge, diff --git a/src/models/transactions/xchain_modify_bridge.rs b/src/models/transactions/xchain_modify_bridge.rs index 206d8506..33be343b 100644 --- a/src/models/transactions/xchain_modify_bridge.rs +++ b/src/models/transactions/xchain_modify_bridge.rs @@ -64,7 +64,7 @@ impl<'a> XChainModifyBridge<'a> { last_ledger_sequence: Option, memos: Option>, sequence: Option, - signers: Option>>, + signers: Option>, source_tag: Option, ticket_sequence: Option, xchain_bridge: XChainBridge<'a>, @@ -72,22 +72,22 @@ impl<'a> XChainModifyBridge<'a> { signature_reward: Option>, ) -> XChainModifyBridge<'a> { XChainModifyBridge { - common_fields: CommonFields { + common_fields: CommonFields::new( account, - transaction_type: TransactionType::XChainModifyBridge, + TransactionType::XChainModifyBridge, account_txn_id, fee, - flags: flags.unwrap_or_default(), + Some(flags.unwrap_or_default()), last_ledger_sequence, memos, + None, sequence, signers, + None, source_tag, ticket_sequence, - network_id: None, - signing_pub_key: None, - txn_signature: None, - }, + None, + ), xchain_bridge, min_account_create_amount, signature_reward, diff --git a/src/transaction/multisign.rs b/src/transaction/multisign.rs index cfc4bc3d..9877cf99 100644 --- a/src/transaction/multisign.rs +++ b/src/transaction/multisign.rs @@ -29,6 +29,7 @@ where decoded_tx_signers .sort_by_key(|signer| decode_classic_address(signer.account.as_ref()).unwrap()); transaction.get_mut_common_fields().signers = Some(decoded_tx_signers); + transaction.get_mut_common_fields().signing_pub_key = Some("".into()); Ok(()) } @@ -44,17 +45,17 @@ mod test { #[tokio::test] async fn test_multisign() { - let wallet = Wallet::new("sEdT7wHTCLzDG7ueaw4hroSTBvH7Mk5", 0).unwrap(); - let wallet1 = Wallet::create(None).unwrap(); - let wallet2 = Wallet::create(None).unwrap(); - let mut multi_signed_tx = AccountSet::new( + let wallet = Wallet::new("sEdSkooMk31MeTjbHVE7vLvgCpEMAdB", 0).unwrap(); + let first_signer = Wallet::new("sEdTLQkHAWpdS7FDk7EvuS7Mz8aSMRh", 0).unwrap(); + let second_signer = Wallet::new("sEd7DXaHkGQD8mz8xcRLDxfMLqCurif", 0).unwrap(); + let mut account_set_txn = AccountSet::new( Cow::from(wallet.classic_address.clone()), None, + Some("40".into()), None, + Some(4814775), None, - None, - None, - None, + Some(4814738), None, None, None, @@ -67,13 +68,35 @@ mod test { None, None, ); - let mut tx_1 = multi_signed_tx.clone(); - sign(&mut tx_1, &wallet1, true).unwrap(); - let mut tx_2 = multi_signed_tx.clone(); - sign(&mut tx_2, &wallet2, true).unwrap(); + let mut tx_1 = account_set_txn.clone(); + sign(&mut tx_1, &first_signer, true).unwrap(); + let tx_1_expected_signature = "E3BEF86AEFC61E5ED66C95D0C5CE699721A8DAF86B6ED0D1CBAC86C2C03D96A098767B4F163FADBD937A99AC40BD6CED16B2CA98B198C2343D4BA31ECE57530C"; + assert_eq!( + tx_1.get_common_fields().signers.as_ref().unwrap()[0] + .txn_signature + .as_str(), + tx_1_expected_signature + ); + let mut tx_2 = account_set_txn.clone(); + sign(&mut tx_2, &second_signer, true).unwrap(); + let tx_2_expected_signature = "DB64FC69F34A4881F6087226681E7BDDB212027B3FAFB617E598DCA5BBC8FA1A15A6E37A760B534BA554FBCD8D4A9FDEC8DFED206E3EBC393B875F59C765D304"; + assert_eq!( + tx_2.get_common_fields().signers.as_ref().unwrap()[0] + .txn_signature + .as_str(), + tx_2_expected_signature + ); let tx_list = [tx_1.clone(), tx_2.clone()].to_vec(); - - multisign(&mut multi_signed_tx, &tx_list).unwrap(); - assert!(multi_signed_tx.get_common_fields().is_signed()); + multisign(&mut account_set_txn, &tx_list).unwrap(); + assert!(account_set_txn.get_common_fields().is_signed()); + assert_eq!( + account_set_txn + .get_common_fields() + .signers + .as_ref() + .unwrap() + .len(), + 2 + ); } }