@@ -42,11 +42,8 @@ use crate::queries::{
4242 TransferToEthereumStatus ,
4343} ;
4444use 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} ;
5047use 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