@@ -26,6 +26,7 @@ use namada_sdk::ibc::convert_masp_tx_to_ibc_memo;
2626use namada_sdk:: io:: { Io , display_line, edisplay_line} ;
2727use namada_sdk:: key:: * ;
2828use namada_sdk:: rpc:: { InnerTxResult , TxBroadcastData , TxResponse } ;
29+ use namada_sdk:: signing:: SigningData ;
2930use namada_sdk:: state:: EPOCH_SWITCH_BLOCKS_DELAY ;
3031use namada_sdk:: tx:: data:: compute_inner_tx_hash;
3132use namada_sdk:: tx:: { CompressedAuthorization , Section , Signer , Tx } ;
@@ -62,31 +63,32 @@ const MAX_HW_CONVERT: usize = 15;
6263// introduced.
6364const MAX_HW_OUTPUT : usize = 15 ;
6465
65- /// Wrapper around `signing::aux_signing_data` that stores the optional
66- /// disposable address to the wallet
67- pub async fn aux_signing_data (
68- context : & impl Namada ,
69- args : & args:: Tx ,
70- owner : Option < Address > ,
71- default_signer : Option < Address > ,
72- disposable_signing_key : bool ,
73- signatures : Vec < Vec < u8 > > ,
74- wrapper_signature : Option < Vec < u8 > > ,
75- ) -> Result < signing:: SigningTxData , error:: Error > {
76- let signing_data = signing:: aux_signing_data (
77- context,
78- args,
79- owner,
80- default_signer,
81- vec ! [ ] ,
82- disposable_signing_key,
83- signatures,
84- wrapper_signature,
85- )
86- . await ?;
87-
88- Ok ( signing_data)
89- }
66+ // FIXME: remove if unused, or review the docs
67+ // /// Wrapper around `signing::aux_signing_data` that stores the optional
68+ // /// disposable address to the wallet
69+ // pub async fn aux_signing_data(
70+ // context: &impl Namada,
71+ // args: &args::Tx,
72+ // owner: Option<Address>,
73+ // default_signer: Option<Address>,
74+ // disposable_signing_key: bool,
75+ // signatures: Vec<Vec<u8>>,
76+ // wrapper_signature: Option<Vec<u8>>,
77+ // ) -> Result<signing::SigningTxData, error::Error> {
78+ // let signing_data = signing::aux_signing_data(
79+ // context,
80+ // args,
81+ // owner,
82+ // default_signer,
83+ // vec![],
84+ // disposable_signing_key,
85+ // signatures,
86+ // wrapper_signature,
87+ // )
88+ // .await?;
89+
90+ // Ok(signing_data)
91+ // }
9092
9193pub async fn with_hardware_wallet < U , T > (
9294 mut tx : Tx ,
@@ -188,7 +190,7 @@ pub async fn sign<N: Namada>(
188190 context : & N ,
189191 tx : & mut Tx ,
190192 args : & args:: Tx ,
191- signing_data : SigningTxData ,
193+ signing_data : SigningData ,
192194) -> Result < ( ) , error:: Error > {
193195 // Setup a reusable context for signing transactions using the Ledger
194196 if args. use_device {
@@ -219,7 +221,7 @@ pub async fn submit_reveal_aux(
219221 context : & impl Namada ,
220222 args : & args:: Tx ,
221223 address : & Address ,
222- ) -> Result < Option < ( Tx , SigningTxData ) > , error:: Error > {
224+ ) -> Result < Option < ( Tx , SigningData ) > , error:: Error > {
223225 if args. dump_tx || args. dump_wrapper_tx {
224226 return Ok ( None ) ;
225227 }
@@ -250,11 +252,15 @@ async fn batch_opt_reveal_pk_and_submit<N: Namada>(
250252 namada : & N ,
251253 args : & args:: Tx ,
252254 owners : & [ & Address ] ,
253- mut tx_data : ( Tx , SigningTxData ) ,
255+ mut tx_data : ( Tx , SigningData ) ,
254256) -> Result < ProcessTxResponse , error:: Error >
255257where
256258 <N :: Client as namada_sdk:: io:: Client >:: Error : std:: fmt:: Display ,
257259{
260+ if !matches ! ( tx_data. 1 , SigningData :: Wrapper ( _) ) {
261+ panic ! ( "Expected wrapper signing data to submit the transaction" ) ;
262+ }
263+
258264 let mut batched_tx_data = vec ! [ ] ;
259265
260266 for owner in owners {
@@ -270,7 +276,7 @@ where
270276 if args. use_device {
271277 // Sign each transaction separately
272278 for ( tx, sig_data) in & mut batched_tx_data {
273- sign ( namada, tx, args, sig_data. clone ( ) ) . await ?;
279+ sign ( namada, tx, args, sig_data. to_owned ( ) ) . await ?;
274280 }
275281 sign ( namada, & mut tx_data. 0 , args, tx_data. 1 ) . await ?;
276282 // Then submit each transaction separately
@@ -327,6 +333,7 @@ where
327333 return tx:: dump_tx ( namada. io ( ) , & args. tx , tx) ;
328334 }
329335 if args. tx . dump_wrapper_tx {
336+ // FIXME: here we attach the inner signatures when dumping the wrapper
330337 // Attach the provided inner signatures to the tx (if any)
331338 let signatures = args
332339 . signatures
@@ -1246,10 +1253,12 @@ pub async fn submit_shielded_transfer(
12461253 )
12471254 . await ?;
12481255 let ( mut tx, signing_data) =
1249- args. clone ( ) . build ( namada, & mut bparams, false ) . await ?;
1250- let disposable_fee_payer = match signing_data. fee_payer {
1251- either:: Either :: Left ( ( _, disposable_fee_payer) ) => disposable_fee_payer,
1252- either:: Either :: Right ( _) => unreachable ! ( ) ,
1256+ args. clone ( ) . build ( namada, & mut bparams) . await ?;
1257+ let disposable_fee_payer = match signing_data {
1258+ SigningData :: Inner ( _) => false ,
1259+ SigningData :: Wrapper ( ref signing_wrapper_data) => {
1260+ signing_wrapper_data. disposable_fee_payer ( )
1261+ }
12531262 } ;
12541263 if !disposable_fee_payer {
12551264 display_line ! (
@@ -1261,7 +1270,15 @@ pub async fn submit_shielded_transfer(
12611270 fees via the MASP with a disposable gas payer.",
12621271 ) ;
12631272 }
1264- masp_sign ( & mut tx, & args. tx , & signing_data, shielded_hw_keys) . await ?;
1273+ masp_sign (
1274+ & mut tx,
1275+ & args. tx ,
1276+ signing_data
1277+ . signing_tx_data ( )
1278+ . expect ( "Missing expected signing data" ) ,
1279+ shielded_hw_keys,
1280+ )
1281+ . await ?;
12651282
12661283 let masp_section = tx
12671284 . sections
@@ -1409,10 +1426,12 @@ pub async fn submit_unshielding_transfer(
14091426 )
14101427 . await ?;
14111428 let ( mut tx, signing_data) =
1412- args. clone ( ) . build ( namada, & mut bparams, false ) . await ?;
1413- let disposable_fee_payer = match signing_data. fee_payer {
1414- either:: Either :: Left ( ( _, disposable_fee_payer) ) => disposable_fee_payer,
1415- either:: Either :: Right ( _) => unreachable ! ( ) ,
1429+ args. clone ( ) . build ( namada, & mut bparams) . await ?;
1430+ let disposable_fee_payer = match signing_data {
1431+ SigningData :: Inner ( _) => false ,
1432+ SigningData :: Wrapper ( ref signing_wrapper_data) => {
1433+ signing_wrapper_data. disposable_fee_payer ( )
1434+ }
14161435 } ;
14171436 if !disposable_fee_payer {
14181437 display_line ! (
@@ -1424,7 +1443,15 @@ pub async fn submit_unshielding_transfer(
14241443 gas fees via the MASP with a disposable gas payer.",
14251444 ) ;
14261445 }
1427- masp_sign ( & mut tx, & args. tx , & signing_data, shielded_hw_keys) . await ?;
1446+ masp_sign (
1447+ & mut tx,
1448+ & args. tx ,
1449+ signing_data
1450+ . signing_tx_data ( )
1451+ . expect ( "Missing signing data" ) ,
1452+ shielded_hw_keys,
1453+ )
1454+ . await ?;
14281455
14291456 let masp_section = tx
14301457 . sections
@@ -1493,12 +1520,14 @@ where
14931520 // If transaction building fails for any reason, then abort the process
14941521 // blaming MASP build parameter generation if that had also failed.
14951522 let ( mut tx, signing_data, _) = args
1496- . build ( namada, & mut bparams, false )
1523+ . build ( namada, & mut bparams)
14971524 . await
14981525 . map_err ( |e| bparams_err. unwrap_or ( e) ) ?;
1499- let disposable_fee_payer = match signing_data. fee_payer {
1500- either:: Either :: Left ( ( _, disposable_fee_payer) ) => disposable_fee_payer,
1501- either:: Either :: Right ( _) => unreachable ! ( ) ,
1526+ let disposable_fee_payer = match signing_data {
1527+ SigningData :: Inner ( _) => false ,
1528+ SigningData :: Wrapper ( ref signing_wrapper_data) => {
1529+ signing_wrapper_data. disposable_fee_payer ( )
1530+ }
15021531 } ;
15031532 if args. source . spending_key ( ) . is_some ( ) && !disposable_fee_payer {
15041533 display_line ! (
@@ -1513,7 +1542,15 @@ where
15131542 // Any effects of a MASP build parameter generation failure would have
15141543 // manifested during transaction building. So we discount that as a root
15151544 // cause from now on.
1516- masp_sign ( & mut tx, & args. tx , & signing_data, shielded_hw_keys) . await ?;
1545+ masp_sign (
1546+ & mut tx,
1547+ & args. tx ,
1548+ signing_data
1549+ . signing_tx_data ( )
1550+ . expect ( "Missing expected signing data" ) ,
1551+ shielded_hw_keys,
1552+ )
1553+ . await ?;
15171554
15181555 let opt_masp_section =
15191556 tx. sections . iter ( ) . find_map ( |section| section. masp_tx ( ) ) ;
0 commit comments