@@ -146,9 +146,13 @@ fn check_and_mark_dispense_limit(
146146 Ok ( ( ) )
147147}
148148
149- async fn get_coins ( wallet : & WalletUnlocked , amount : u64 ) -> Result < Vec < Input > , DispenseError > {
149+ async fn get_coins (
150+ wallet : & WalletUnlocked ,
151+ base_asset_id : & AssetId ,
152+ amount : u64 ,
153+ ) -> Result < Vec < Input > , DispenseError > {
150154 wallet
151- . get_spendable_resources ( AssetId :: BASE , amount)
155+ . get_spendable_resources ( * base_asset_id , amount)
152156 . await
153157 . map_err ( |e| {
154158 error (
@@ -245,6 +249,7 @@ pub async fn dispense_tokens(
245249 } ) ;
246250
247251 let provider = wallet. provider ( ) . expect ( "client provider" ) ;
252+ let base_asset_id = * provider. consensus_parameters ( ) . base_asset_id ( ) ;
248253
249254 let mut tx_id = None ;
250255 for _ in 0 ..5 {
@@ -253,25 +258,25 @@ pub async fn dispense_tokens(
253258 let coin_type = CoinType :: Coin ( Coin {
254259 amount : previous_coin_output. amount ,
255260 block_created : 0u32 ,
256- asset_id : config . dispense_asset_id ,
261+ asset_id : base_asset_id ,
257262 utxo_id : previous_coin_output. utxo_id ,
258263 owner : previous_coin_output. owner . into ( ) ,
259264 status : CoinStatus :: Unspent ,
260265 } ) ;
261266
262267 vec ! [ Input :: resource_signed( coin_type) ]
263268 } else {
264- get_coins ( & wallet, config. dispense_amount ) . await ?
269+ get_coins ( & wallet, & base_asset_id , config. dispense_amount ) . await ?
265270 } ;
266271
267272 let mut outputs = wallet. get_asset_outputs_for_amount (
268273 & address. into ( ) ,
269- config . dispense_asset_id ,
274+ base_asset_id ,
270275 config. dispense_amount ,
271276 ) ;
272277 let faucet_address: Address = wallet. address ( ) . into ( ) ;
273278 // Add an additional output to store the stable part of the fee change.
274- outputs. push ( Output :: coin ( faucet_address, 0 , config . dispense_asset_id ) ) ;
279+ outputs. push ( Output :: coin ( faucet_address, 0 , base_asset_id ) ) ;
275280
276281 let tip = guard. next_tip ( ) ;
277282
@@ -307,7 +312,7 @@ pub async fn dispense_tokens(
307312 "Overflow during calculating `TransactionFee`" . to_string ( ) ,
308313 StatusCode :: INTERNAL_SERVER_ERROR ,
309314 ) ) ?;
310- let available_balance = available_balance ( & tx_builder. inputs , & config . dispense_asset_id ) ;
315+ let available_balance = available_balance ( & tx_builder. inputs , & base_asset_id ) ;
311316 let stable_fee_change = available_balance
312317 . checked_sub ( fee. max_fee ( ) . saturating_add ( config. dispense_amount ) )
313318 . ok_or ( error (
@@ -316,7 +321,7 @@ pub async fn dispense_tokens(
316321 ) ) ?;
317322
318323 * tx_builder. outputs . last_mut ( ) . unwrap ( ) =
319- Output :: coin ( faucet_address, stable_fee_change, config . dispense_asset_id ) ;
324+ Output :: coin ( faucet_address, stable_fee_change, base_asset_id ) ;
320325
321326 let script = tx_builder. build ( provider) . await . expect ( "Valid script" ) ;
322327
@@ -388,10 +393,14 @@ pub async fn dispense_tokens(
388393#[ tracing:: instrument( skip_all) ]
389394pub async fn dispense_info (
390395 Extension ( config) : Extension < SharedConfig > ,
396+ Extension ( wallet) : Extension < SharedWallet > ,
391397) -> Result < DispenseInfoResponse , DispenseError > {
398+ let provider = wallet. provider ( ) . expect ( "client provider" ) ;
399+ let base_asset_id = * provider. consensus_parameters ( ) . base_asset_id ( ) ;
400+
392401 Ok ( DispenseInfoResponse {
393402 amount : config. dispense_amount ,
394- asset_id : config . dispense_asset_id . to_string ( ) ,
403+ asset_id : base_asset_id . to_string ( ) ,
395404 } )
396405}
397406
0 commit comments