Skip to content

Commit cde13a2

Browse files
committed
Refactors extraction of signing data into a separate function
1 parent 9e76505 commit cde13a2

File tree

2 files changed

+536
-1162
lines changed

2 files changed

+536
-1162
lines changed

crates/sdk/src/eth_bridge/bridge_pool.rs

Lines changed: 33 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,8 @@ use crate::queries::{
4242
TransferToEthereumStatus,
4343
};
4444
use crate::rpc::{query_storage_value, query_wasm_code_hash, validate_amount};
45-
use crate::signing::{
46-
SigningData, aux_inner_signing_data, aux_signing_data,
47-
validate_transparent_fee,
48-
};
49-
use crate::tx::WrapArgs;
45+
use crate::signing::SigningData;
46+
use crate::tx::{ExtendedWrapperArgs, WrapArgs, derive_build_data};
5047
use crate::{MaybeSync, Namada, args};
5148

5249
/// Craft a transaction that adds a transfer to the Ethereum bridge pool.
@@ -66,83 +63,40 @@ pub async fn build_bridge_pool_tx(
6663
}: args::EthereumBridgePool,
6764
) -> Result<(Tx, SigningData), Error> {
6865
let sender_ = sender.clone();
69-
let (signing_data, wrap_args, transfer, tx_code_hash) =
70-
if let Some(wrap_tx) = &tx_args.wrap_tx {
71-
let (transfer, tx_code_hash, signing_data) = futures::try_join!(
72-
validate_bridge_pool_tx(
73-
context,
74-
tx_args.force,
75-
nut,
76-
asset,
77-
recipient,
78-
sender,
79-
amount,
80-
fee_amount,
81-
fee_payer,
82-
fee_token,
83-
),
84-
query_wasm_code_hash(context, code_path.to_string_lossy()),
85-
aux_signing_data(
86-
context,
87-
wrap_tx,
88-
// tx signer
89-
Some(sender_),
90-
vec![],
91-
false,
92-
vec![],
93-
),
94-
)?;
95-
let fee_payer = signing_data.fee_payer_or_err()?.to_owned();
96-
let (fee_amount, _) = validate_transparent_fee(
66+
let (signing_data, wrap_args, transfer, tx_code_hash) = {
67+
let (transfer, tx_code_hash, (signing_data, wrap_args, _)) = futures::try_join!(
68+
validate_bridge_pool_tx(
9769
context,
98-
wrap_tx,
9970
tx_args.force,
100-
&fee_payer,
101-
)
102-
.await?;
103-
104-
(
105-
SigningData::Wrapper(signing_data),
106-
Some(WrapArgs {
107-
fee_amount,
108-
fee_payer,
109-
fee_token: wrap_tx.fee_token.to_owned(),
110-
gas_limit: wrap_tx.gas_limit,
111-
}),
112-
transfer,
113-
tx_code_hash,
114-
)
115-
} else {
116-
let (transfer, tx_code_hash, signing_data) = futures::try_join!(
117-
validate_bridge_pool_tx(
118-
context,
119-
tx_args.force,
120-
nut,
121-
asset,
122-
recipient,
123-
sender,
124-
amount,
125-
fee_amount,
126-
fee_payer,
127-
fee_token,
128-
),
129-
query_wasm_code_hash(context, code_path.to_string_lossy()),
130-
aux_inner_signing_data(
131-
context,
132-
tx_args.signing_keys,
133-
// tx signer
134-
Some(sender_),
135-
vec![],
136-
)
137-
)?;
71+
nut,
72+
asset,
73+
recipient,
74+
sender,
75+
amount,
76+
fee_amount,
77+
fee_payer,
78+
fee_token,
79+
),
80+
query_wasm_code_hash(context, code_path.to_string_lossy()),
81+
derive_build_data(
82+
context,
83+
tx_args
84+
.wrap_tx
85+
.as_ref()
86+
.map(|wrap_args| ExtendedWrapperArgs {
87+
wrap_args,
88+
disposable_gas_payer: false
89+
}),
90+
tx_args.force,
91+
// tx signer
92+
Some(sender_),
93+
vec![],
94+
vec![],
95+
),
96+
)?;
13897

139-
(
140-
SigningData::Inner(signing_data),
141-
None,
142-
transfer,
143-
tx_code_hash,
144-
)
145-
};
98+
(signing_data, wrap_args, transfer, tx_code_hash)
99+
};
146100

147101
let chain_id = tx_args
148102
.chain_id

0 commit comments

Comments
 (0)