@@ -1637,7 +1637,7 @@ impl AptosVM {
1637
1637
& gas_meter. vm_gas_params( ) . txn,
1638
1638
& txn_data,
1639
1639
txn. payload( ) ,
1640
- ) ;
1640
+ ) ? ;
1641
1641
txn_data. set_required_deposit( required_deposit) ;
1642
1642
self . validate_signed_transaction( session, resolver, txn, & txn_data, log_context)
1643
1643
} ) ) ;
@@ -2319,11 +2319,11 @@ impl AptosVM {
2319
2319
txn_gas_params : & TransactionGasParameters ,
2320
2320
txn_metadata : & TransactionMetadata ,
2321
2321
payload : & TransactionPayload ,
2322
- ) -> Option < u64 > {
2322
+ ) -> VMResult < Option < u64 > > {
2323
2323
match payload {
2324
2324
TransactionPayload :: EntryFunction ( entry_func) => {
2325
2325
if self . randomness_enabled
2326
- && has_randomness_attribute ( resolver, session, entry_func) . unwrap_or ( false )
2326
+ && has_randomness_attribute ( resolver, session, entry_func) ?
2327
2327
{
2328
2328
let max_execution_gas: Gas = txn_gas_params
2329
2329
. max_execution_gas
@@ -2336,14 +2336,14 @@ impl AptosVM {
2336
2336
let cand_1 =
2337
2337
txn_metadata. gas_unit_price * txn_gas_params. maximum_number_of_gas_units ;
2338
2338
let required_fee_deposit = min ( cand_0, cand_1) ;
2339
- Some ( u64:: from ( required_fee_deposit) )
2339
+ Ok ( Some ( u64:: from ( required_fee_deposit) ) )
2340
2340
} else {
2341
- None
2341
+ Ok ( None )
2342
2342
}
2343
2343
} ,
2344
2344
TransactionPayload :: Script ( _)
2345
2345
| TransactionPayload :: ModuleBundle ( _)
2346
- | TransactionPayload :: Multisig ( _) => None ,
2346
+ | TransactionPayload :: Multisig ( _) => Ok ( None ) ,
2347
2347
}
2348
2348
}
2349
2349
}
@@ -2481,7 +2481,7 @@ impl VMValidator for AptosVM {
2481
2481
2482
2482
let resolver = self . as_move_resolver ( & state_view) ;
2483
2483
let mut session = self . new_session ( & resolver, SessionId :: prologue_meta ( & txn_data) ) ;
2484
- let required_deposit = if let Ok ( gas_params) = & self . gas_params {
2484
+ let maybe_required_deposit = if let Ok ( gas_params) = & self . gas_params {
2485
2485
self . get_required_deposit (
2486
2486
& mut session,
2487
2487
& resolver,
@@ -2490,7 +2490,14 @@ impl VMValidator for AptosVM {
2490
2490
txn. payload ( ) ,
2491
2491
)
2492
2492
} else {
2493
- return VMValidatorResult :: error ( StatusCode :: UNKNOWN_VALIDATION_STATUS ) ;
2493
+ return VMValidatorResult :: error ( StatusCode :: GAS_PARAMS_MISSING ) ;
2494
+ } ;
2495
+
2496
+ let required_deposit = match maybe_required_deposit {
2497
+ Ok ( v) => v,
2498
+ Err ( _e) => {
2499
+ return VMValidatorResult :: error ( StatusCode :: DEPOSIT_CALCULATION_FAILED ) ;
2500
+ } ,
2494
2501
} ;
2495
2502
2496
2503
txn_data. set_required_deposit ( required_deposit) ;
0 commit comments