Skip to content

Commit d4476ce

Browse files
authored
Merge pull request #99 from sephynox/multisigning
Multisigning
2 parents 89e68e1 + 24b76b6 commit d4476ce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+411
-386
lines changed

.devcontainer/devcontainer.json

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,9 @@
66
"service": "app",
77
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
88
// Use 'mounts' to make the cargo cache persistent in a Docker Volume.
9-
// "mounts": [
10-
// {
11-
// "source": "devcontainer-cargo-cache-${devcontainerId}",
12-
// "target": "/usr/local/cargo",
13-
// "type": "volume"
14-
// }
15-
// ]
9+
"mounts": [
10+
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
11+
],
1612
// Use 'postCreateCommand' to run commands after the container is created.
1713
"postStartCommand": "rustup --version && rustup component add rustfmt && rustup component add clippy",
1814
// Configure tool-specific properties.

src/asynch/clients/json_rpc/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
use alloc::{string::ToString, vec};
32
use serde::Serialize;
43
use serde_json::{Map, Value};

src/core/binarycodec/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use crate::XRPLSerdeJsonError;
2323
use super::exceptions::XRPLCoreResult;
2424

2525
const TRANSACTION_SIGNATURE_PREFIX: i32 = 0x53545800;
26-
const TRANSACTION_MULTISIG_PREFIX: i32 = 0x534D5400;
26+
const TRANSACTION_MULTISIG_PREFIX: [u8; 4] = (0x534D5400u32).to_be_bytes();
2727

2828
pub fn encode<T>(signed_transaction: &T) -> XRPLCoreResult<String>
2929
where
@@ -55,7 +55,7 @@ where
5555

5656
serialize_json(
5757
prepared_transaction,
58-
Some(TRANSACTION_MULTISIG_PREFIX.to_be_bytes().as_ref()),
58+
Some(TRANSACTION_MULTISIG_PREFIX.as_ref()),
5959
Some(signing_account_id.as_ref()),
6060
true,
6161
)

src/models/requests/submit_multisigned.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub struct SubmitMultisigned<'a> {
2323
/// The common fields shared by all requests.
2424
#[serde(flatten)]
2525
pub common_fields: CommonFields<'a>,
26+
pub tx_json: serde_json::Value,
2627
/// If true, and the transaction fails locally, do not
2728
/// retry or relay the transaction to other servers.
2829
pub fail_hard: Option<bool>,
@@ -41,13 +42,18 @@ impl<'a> Request<'a> for SubmitMultisigned<'a> {
4142
}
4243

4344
impl<'a> SubmitMultisigned<'a> {
44-
pub fn new(id: Option<Cow<'a, str>>, fail_hard: Option<bool>) -> Self {
45+
pub fn new(
46+
id: Option<Cow<'a, str>>,
47+
tx_json: serde_json::Value,
48+
fail_hard: Option<bool>,
49+
) -> Self {
4550
Self {
4651
common_fields: CommonFields {
4752
command: RequestMethod::SubmitMultisigned,
4853
id,
4954
},
5055
fail_hard,
56+
tx_json,
5157
}
5258
}
5359
}

src/models/transactions/account_delete.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,29 +68,29 @@ impl<'a> AccountDelete<'a> {
6868
last_ledger_sequence: Option<u32>,
6969
memos: Option<Vec<Memo>>,
7070
sequence: Option<u32>,
71-
signers: Option<Vec<Signer<'a>>>,
71+
signers: Option<Vec<Signer>>,
7272
source_tag: Option<u32>,
7373
ticket_sequence: Option<u32>,
7474
destination: Cow<'a, str>,
7575
destination_tag: Option<u32>,
7676
) -> Self {
7777
Self {
78-
common_fields: CommonFields {
78+
common_fields: CommonFields::new(
7979
account,
80-
transaction_type: TransactionType::AccountDelete,
80+
TransactionType::AccountDelete,
8181
account_txn_id,
8282
fee,
83-
flags: FlagCollection::default(),
83+
Some(FlagCollection::default()),
8484
last_ledger_sequence,
8585
memos,
86+
None,
8687
sequence,
8788
signers,
89+
None,
8890
source_tag,
8991
ticket_sequence,
90-
network_id: None,
91-
signing_pub_key: None,
92-
txn_signature: None,
93-
},
92+
None,
93+
),
9494
destination,
9595
destination_tag,
9696
}
@@ -116,7 +116,7 @@ mod test_serde {
116116
"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe".into(),
117117
Some(13),
118118
);
119-
let default_json_str = r#"{"Account":"rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm","TransactionType":"AccountDelete","Fee":"2000000","Flags":0,"Sequence":2470665,"Destination":"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe","DestinationTag":13}"#;
119+
let default_json_str = r#"{"Account":"rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm","TransactionType":"AccountDelete","Fee":"2000000","Flags":0,"Sequence":2470665,"SigningPubKey":"","Destination":"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe","DestinationTag":13}"#;
120120
// Serialize
121121
let default_json_value = serde_json::to_value(default_json_str).unwrap();
122122
let serialized_string = serde_json::to_string(&default_txn).unwrap();

src/models/transactions/account_set.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ impl<'a> AccountSet<'a> {
281281
last_ledger_sequence: Option<u32>,
282282
memos: Option<Vec<Memo>>,
283283
sequence: Option<u32>,
284-
signers: Option<Vec<Signer<'a>>>,
284+
signers: Option<Vec<Signer>>,
285285
source_tag: Option<u32>,
286286
ticket_sequence: Option<u32>,
287287
clear_flag: Option<AccountSetFlag>,
@@ -294,22 +294,22 @@ impl<'a> AccountSet<'a> {
294294
nftoken_minter: Option<Cow<'a, str>>,
295295
) -> Self {
296296
Self {
297-
common_fields: CommonFields {
297+
common_fields: CommonFields::new(
298298
account,
299-
transaction_type: TransactionType::AccountSet,
299+
TransactionType::AccountSet,
300300
account_txn_id,
301301
fee,
302-
flags: flags.unwrap_or_default(),
302+
Some(flags.unwrap_or_default()),
303303
last_ledger_sequence,
304304
memos,
305+
None,
305306
sequence,
306307
signers,
308+
None,
307309
source_tag,
308310
ticket_sequence,
309-
network_id: None,
310-
signing_pub_key: None,
311-
txn_signature: None,
312-
},
311+
None,
312+
),
313313
clear_flag,
314314
domain,
315315
email_hash,
@@ -558,7 +558,7 @@ mod tests {
558558
None,
559559
None,
560560
);
561-
let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"AccountSet","Fee":"12","Flags":0,"Sequence":5,"Domain":"6578616D706C652E636F6D","MessageKey":"03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB","SetFlag":5}"#;
561+
let default_json_str = r#"{"Account":"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn","TransactionType":"AccountSet","Fee":"12","Flags":0,"Sequence":5,"SigningPubKey":"","Domain":"6578616D706C652E636F6D","MessageKey":"03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB","SetFlag":5}"#;
562562
// Serialize
563563
let default_json_value = serde_json::to_value(default_json_str).unwrap();
564564
let serialized_string = serde_json::to_string(&default_txn).unwrap();

src/models/transactions/amm_bid.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl<'a> AMMBid<'_> {
6565
last_ledger_sequence: Option<u32>,
6666
memos: Option<Vec<Memo>>,
6767
sequence: Option<u32>,
68-
signers: Option<Vec<Signer<'a>>>,
68+
signers: Option<Vec<Signer>>,
6969
source_tag: Option<u32>,
7070
ticket_sequence: Option<u32>,
7171
asset: Currency<'a>,
@@ -75,22 +75,22 @@ impl<'a> AMMBid<'_> {
7575
auth_accounts: Option<Vec<AuthAccount>>,
7676
) -> AMMBid<'a> {
7777
AMMBid {
78-
common_fields: CommonFields {
78+
common_fields: CommonFields::new(
7979
account,
80-
transaction_type: TransactionType::AMMBid,
80+
TransactionType::AMMBid,
8181
account_txn_id,
8282
fee,
83-
flags: FlagCollection::default(),
83+
Some(FlagCollection::default()),
8484
last_ledger_sequence,
8585
memos,
86+
None,
8687
sequence,
8788
signers,
89+
None,
8890
source_tag,
8991
ticket_sequence,
90-
network_id: None,
91-
signing_pub_key: None,
92-
txn_signature: None,
93-
},
92+
None,
93+
),
9494
asset,
9595
asset2,
9696
bid_min,

src/models/transactions/amm_create.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,30 +75,30 @@ impl<'a> AMMCreate<'a> {
7575
last_ledger_sequence: Option<u32>,
7676
memos: Option<Vec<Memo>>,
7777
sequence: Option<u32>,
78-
signers: Option<Vec<Signer<'a>>>,
78+
signers: Option<Vec<Signer>>,
7979
source_tag: Option<u32>,
8080
ticket_sequence: Option<u32>,
8181
amount: Amount<'a>,
8282
amount2: Amount<'a>,
8383
trading_fee: u16,
8484
) -> AMMCreate<'a> {
8585
AMMCreate {
86-
common_fields: CommonFields {
86+
common_fields: CommonFields::new(
8787
account,
88-
transaction_type: TransactionType::AMMCreate,
88+
TransactionType::AMMCreate,
8989
account_txn_id,
9090
fee,
91-
flags: FlagCollection::default(),
91+
Some(FlagCollection::default()),
9292
last_ledger_sequence,
9393
memos,
94+
None,
9495
sequence,
9596
signers,
97+
None,
9698
source_tag,
9799
ticket_sequence,
98-
network_id: None,
99-
signing_pub_key: None,
100-
txn_signature: None,
101-
},
100+
None,
101+
),
102102
amount,
103103
amount2,
104104
trading_fee,

src/models/transactions/amm_delete.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,29 +54,29 @@ impl<'a> AMMDelete<'a> {
5454
last_ledger_sequence: Option<u32>,
5555
memos: Option<Vec<Memo>>,
5656
sequence: Option<u32>,
57-
signers: Option<Vec<Signer<'a>>>,
57+
signers: Option<Vec<Signer>>,
5858
source_tag: Option<u32>,
5959
ticket_sequence: Option<u32>,
6060
asset: Currency<'a>,
6161
asset2: Currency<'a>,
6262
) -> AMMDelete<'a> {
6363
AMMDelete {
64-
common_fields: CommonFields {
64+
common_fields: CommonFields::new(
6565
account,
66-
transaction_type: TransactionType::AMMDelete,
66+
TransactionType::AMMDelete,
6767
account_txn_id,
6868
fee,
69-
flags: FlagCollection::default(),
69+
Some(FlagCollection::default()),
7070
last_ledger_sequence,
7171
memos,
72+
None,
7273
sequence,
7374
signers,
75+
None,
7476
source_tag,
7577
ticket_sequence,
76-
network_id: None,
77-
signing_pub_key: None,
78-
txn_signature: None,
79-
},
78+
None,
79+
),
8080
asset,
8181
asset2,
8282
}

src/models/transactions/amm_deposit.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ impl<'a> AMMDeposit<'a> {
104104
last_ledger_sequence: Option<u32>,
105105
memos: Option<Vec<Memo>>,
106106
sequence: Option<u32>,
107-
signers: Option<Vec<Signer<'a>>>,
107+
signers: Option<Vec<Signer>>,
108108
source_tag: Option<u32>,
109109
ticket_sequence: Option<u32>,
110110
asset: Currency<'a>,
@@ -115,22 +115,22 @@ impl<'a> AMMDeposit<'a> {
115115
lp_token_out: Option<IssuedCurrencyAmount<'a>>,
116116
) -> AMMDeposit<'a> {
117117
AMMDeposit {
118-
common_fields: CommonFields {
118+
common_fields: CommonFields::new(
119119
account,
120-
transaction_type: TransactionType::AMMDeposit,
120+
TransactionType::AMMDeposit,
121121
account_txn_id,
122122
fee,
123-
flags: flags.unwrap_or_default(),
123+
Some(flags.unwrap_or_default()),
124124
last_ledger_sequence,
125125
memos,
126+
None,
126127
sequence,
127128
signers,
129+
None,
128130
source_tag,
129131
ticket_sequence,
130-
network_id: None,
131-
signing_pub_key: None,
132-
txn_signature: None,
133-
},
132+
None,
133+
),
134134
asset,
135135
asset2,
136136
amount,

0 commit comments

Comments
 (0)