@@ -24,10 +24,14 @@ struct Args {
2424 #[ arg( long, default_value_t = 8080 , env = "TAP_PORT" ) ]
2525 port : u16 ,
2626
27- /// Gateway mnemonic to be used to sign Receipt Aggregate Vouchers.
27+ /// Gateway mnemonic to be used to generate key for signing Receipt Aggregate Vouchers.
2828 #[ arg( long, env = "TAP_MNEMONIC" ) ]
2929 mnemonic : String ,
3030
31+ /// Gateway key derive path to be used to generate key for signing Receipt Aggregate Vouchers.
32+ #[ arg( long, env = "TAP_KEY_DERIVE_PATH" ) ]
33+ key_derive_path : Option < String > ,
34+
3135 /// Maximum request body size in bytes.
3236 /// Defaults to 10MB.
3337 #[ arg( long, default_value_t = 10 * 1024 * 1024 , env = "TAP_MAX_REQUEST_BODY_SIZE" ) ]
@@ -86,9 +90,18 @@ async fn main() -> Result<()> {
8690 tokio:: spawn ( metrics:: run_server ( args. metrics_port ) ) ;
8791
8892 // Create a wallet from the mnemonic.
89- let wallet = MnemonicBuilder :: < English > :: default ( )
90- . phrase ( args. mnemonic . as_str ( ) )
91- . build ( ) ?;
93+ let wallet = if let Some ( key_derive_path) = args. key_derive_path . as_deref ( ) {
94+ info ! ( "Creating wallet from mnemonic and key derive path..." ) ;
95+ MnemonicBuilder :: < English > :: default ( )
96+ . phrase ( args. mnemonic . as_str ( ) )
97+ . derivation_path ( key_derive_path) ?
98+ . build ( ) ?
99+ } else {
100+ info ! ( "Creating wallet from mnemonic..." ) ;
101+ MnemonicBuilder :: < English > :: default ( )
102+ . phrase ( args. mnemonic . as_str ( ) )
103+ . build ( ) ?
104+ } ;
92105
93106 // Create the EIP-712 domain separator.
94107 let domain_separator = create_eip712_domain ( & args) ?;
0 commit comments