1
1
use near_sdk:: serde:: Serialize ;
2
- use near_sdk:: { env, log, near, AccountId , NearToken , Promise , PromiseError , PublicKey } ;
2
+ use near_sdk:: { env, log, near, AccountId , NearToken , Promise , PromiseError , PublicKey , require } ;
3
3
4
4
use crate :: { Contract , ContractExt , NEAR_PER_STORAGE , NO_DEPOSIT , TGAS } ;
5
5
@@ -21,7 +21,7 @@ impl Contract {
21
21
// Assert the sub-account is valid
22
22
let current_account = env:: current_account_id ( ) . to_string ( ) ;
23
23
let subaccount: AccountId = format ! ( "{name}.{current_account}" ) . parse ( ) . unwrap ( ) ;
24
- assert ! (
24
+ require ! (
25
25
env:: is_valid_account_id( subaccount. as_bytes( ) ) ,
26
26
"Invalid subaccount"
27
27
) ;
@@ -31,10 +31,12 @@ impl Contract {
31
31
32
32
let code = self . code . clone ( ) . unwrap ( ) ;
33
33
let contract_bytes = code. len ( ) as u128 ;
34
- let minimum_needed = NEAR_PER_STORAGE . saturating_mul ( contract_bytes) ;
35
- assert ! (
34
+ let contract_storage_cost = NEAR_PER_STORAGE . saturating_mul ( contract_bytes) ;
35
+ // Require a little more since storage cost is not exact
36
+ let minimum_needed = contract_storage_cost. saturating_add ( NearToken :: from_millinear ( 100 ) ) ;
37
+ require ! (
36
38
attached >= minimum_needed,
37
- "Attach at least {minimum_needed} yⓃ"
39
+ "Attach at least {minimum_needed} yⓃ" ,
38
40
) ;
39
41
40
42
let init_args = near_sdk:: serde_json:: to_vec ( & DonationInitArgs { beneficiary } ) . unwrap ( ) ;
0 commit comments