11/// This contract implements SNIP-20 standard:
22/// https://github.com/SecretFoundation/SNIPs/blob/master/SNIP-20.md
33use cosmwasm_std:: {
4- to_binary, Api , BankMsg , Binary , CanonicalAddr , Coin , CosmosMsg , Env , Extern , HandleResponse ,
5- HumanAddr , InitResponse , Querier , QueryResult , ReadonlyStorage , StdError , StdResult , Storage ,
6- Uint128 ,
4+ log , to_binary, Api , BankMsg , Binary , CanonicalAddr , Coin , CosmosMsg , Env , Extern ,
5+ HandleResponse , HumanAddr , InitResponse , Querier , QueryResult , ReadonlyStorage , StdError ,
6+ StdResult , Storage , Uint128 ,
77} ;
88
99use crate :: msg:: {
@@ -99,11 +99,11 @@ pub fn handle<S: Storage, A: Api, Q: Querier>(
9999 let contract_status = ReadonlyConfig :: from_storage ( & deps. storage ) . contract_status ( ) ;
100100
101101 match contract_status {
102- ContractStatusLevel :: StopAll | ContractStatusLevel :: StopAllButWithdrawals => {
102+ ContractStatusLevel :: StopAll | ContractStatusLevel :: StopAllButRedeems => {
103103 let response = match msg {
104104 HandleMsg :: SetContractStatus { level, .. } => set_contract_status ( deps, env, level) ,
105105 HandleMsg :: Redeem { amount, .. }
106- if contract_status == ContractStatusLevel :: StopAllButWithdrawals =>
106+ if contract_status == ContractStatusLevel :: StopAllButRedeems =>
107107 {
108108 try_redeem ( deps, env, amount)
109109 }
@@ -120,7 +120,6 @@ pub fn handle<S: Storage, A: Api, Q: Querier>(
120120 // Native
121121 HandleMsg :: Deposit { .. } => try_deposit ( deps, env) ,
122122 HandleMsg :: Redeem { amount, .. } => try_redeem ( deps, env, amount) ,
123- HandleMsg :: Balance { .. } => try_balance ( deps, env) ,
124123
125124 // Base
126125 HandleMsg :: Transfer {
@@ -274,9 +273,8 @@ pub fn query_balance<S: Storage, A: Api, Q: Querier>(
274273) -> StdResult < Binary > {
275274 let address = deps. api . canonical_address ( account) ?;
276275
277- let response = QueryAnswer :: Balance {
278- amount : Uint128 ( get_balance ( & deps. storage , & address) ) ,
279- } ;
276+ let amount = Uint128 ( ReadonlyBalances :: from_storage ( & deps. storage ) . account_amount ( & address) ) ;
277+ let response = QueryAnswer :: Balance { amount } ;
280278 to_binary ( & response)
281279}
282280
@@ -439,26 +437,6 @@ pub fn try_check_allowance<S: Storage, A: Api, Q: Querier>(
439437 to_binary ( & response)
440438}
441439
442- pub fn try_balance < S : Storage , A : Api , Q : Querier > (
443- deps : & mut Extern < S , A , Q > ,
444- env : Env ,
445- ) -> StdResult < HandleResponse > {
446- let sender_address = deps. api . canonical_address ( & env. message . sender ) ?;
447- let account_balance = get_balance ( & deps. storage , & sender_address) ;
448-
449- Ok ( HandleResponse {
450- messages : vec ! [ ] ,
451- log : vec ! [ ] ,
452- data : Some ( to_binary ( & HandleAnswer :: Balance {
453- amount : Uint128 ( account_balance) ,
454- } ) ?) ,
455- } )
456- }
457-
458- fn get_balance < S : Storage > ( storage : & S , account : & CanonicalAddr ) -> u128 {
459- ReadonlyBalances :: from_storage ( storage) . account_amount ( account)
460- }
461-
462440fn try_deposit < S : Storage , A : Api , Q : Querier > (
463441 deps : & mut Extern < S , A , Q > ,
464442 env : Env ,
@@ -523,7 +501,7 @@ fn try_redeem<S: Storage, A: Api, Q: Querier>(
523501 balances. set_account_balance ( & sender_address, account_balance) ;
524502 } else {
525503 return Err ( StdError :: generic_err ( format ! (
526- "insufficient funds to burn : balance={}, required={}" ,
504+ "insufficient funds to redeem : balance={}, required={}" ,
527505 account_balance, amount_raw
528506 ) ) ) ;
529507 }
@@ -660,7 +638,7 @@ fn try_register_receive<S: Storage, A: Api, Q: Querier>(
660638 set_receiver_hash ( & mut deps. storage , & env. message . sender , code_hash) ;
661639 let res = HandleResponse {
662640 messages : vec ! [ ] ,
663- log : vec ! [ ] ,
641+ log : vec ! [ log ( "register_status" , "success" ) ] ,
664642 data : Some ( to_binary ( & HandleAnswer :: RegisterReceive {
665643 status : Success ,
666644 } ) ?) ,
@@ -670,7 +648,7 @@ fn try_register_receive<S: Storage, A: Api, Q: Querier>(
670648
671649fn insufficient_allowance ( allowance : u128 , required : u128 ) -> StdError {
672650 StdError :: generic_err ( format ! (
673- "Insufficient allowance: allowance={}, required={}" ,
651+ "insufficient allowance: allowance={}, required={}" ,
674652 allowance, required
675653 ) )
676654}
@@ -1036,7 +1014,7 @@ fn perform_transfer<T: Storage>(
10361014 from_balance = new_from_balance;
10371015 } else {
10381016 return Err ( StdError :: generic_err ( format ! (
1039- "Insufficient funds: balance={}, required={}" ,
1017+ "insufficient funds: balance={}, required={}" ,
10401018 from_balance, amount
10411019 ) ) ) ;
10421020 }
@@ -1285,7 +1263,7 @@ mod tests {
12851263 } ;
12861264 let handle_result = handle ( & mut deps, mock_env ( "bob" , & [ ] ) , handle_msg) ;
12871265 let error = extract_error_msg ( handle_result) ;
1288- assert ! ( error. contains( "Insufficient funds" ) ) ;
1266+ assert ! ( error. contains( "insufficient funds" ) ) ;
12891267 }
12901268
12911269 #[ test]
@@ -1464,7 +1442,7 @@ mod tests {
14641442 } ;
14651443 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
14661444 let error = extract_error_msg ( handle_result) ;
1467- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1445+ assert ! ( error. contains( "insufficient allowance" ) ) ;
14681446
14691447 // Transfer more than allowance
14701448 let handle_msg = HandleMsg :: IncreaseAllowance {
@@ -1487,7 +1465,7 @@ mod tests {
14871465 } ;
14881466 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
14891467 let error = extract_error_msg ( handle_result) ;
1490- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1468+ assert ! ( error. contains( "insufficient allowance" ) ) ;
14911469
14921470 // Transfer after allowance expired
14931471 let handle_msg = HandleMsg :: TransferFrom {
@@ -1517,7 +1495,7 @@ mod tests {
15171495 handle_msg,
15181496 ) ;
15191497 let error = extract_error_msg ( handle_result) ;
1520- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1498+ assert ! ( error. contains( "insufficient allowance" ) ) ;
15211499
15221500 // Sanity check
15231501 let handle_msg = HandleMsg :: TransferFrom {
@@ -1558,7 +1536,7 @@ mod tests {
15581536 } ;
15591537 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
15601538 let error = extract_error_msg ( handle_result) ;
1561- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1539+ assert ! ( error. contains( "insufficient allowance" ) ) ;
15621540 }
15631541
15641542 #[ test]
@@ -1583,7 +1561,7 @@ mod tests {
15831561 } ;
15841562 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
15851563 let error = extract_error_msg ( handle_result) ;
1586- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1564+ assert ! ( error. contains( "insufficient allowance" ) ) ;
15871565
15881566 // Send more than allowance
15891567 let handle_msg = HandleMsg :: IncreaseAllowance {
@@ -1607,7 +1585,7 @@ mod tests {
16071585 } ;
16081586 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
16091587 let error = extract_error_msg ( handle_result) ;
1610- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1588+ assert ! ( error. contains( "insufficient allowance" ) ) ;
16111589
16121590 // Sanity check
16131591 let handle_msg = HandleMsg :: RegisterReceive {
@@ -1672,7 +1650,7 @@ mod tests {
16721650 } ;
16731651 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
16741652 let error = extract_error_msg ( handle_result) ;
1675- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1653+ assert ! ( error. contains( "insufficient allowance" ) ) ;
16761654 }
16771655
16781656 #[ test]
@@ -1695,7 +1673,7 @@ mod tests {
16951673 } ;
16961674 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
16971675 let error = extract_error_msg ( handle_result) ;
1698- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1676+ assert ! ( error. contains( "insufficient allowance" ) ) ;
16991677
17001678 // Burn more than allowance
17011679 let handle_msg = HandleMsg :: IncreaseAllowance {
@@ -1717,7 +1695,7 @@ mod tests {
17171695 } ;
17181696 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
17191697 let error = extract_error_msg ( handle_result) ;
1720- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1698+ assert ! ( error. contains( "insufficient allowance" ) ) ;
17211699
17221700 // Sanity check
17231701 let handle_msg = HandleMsg :: BurnFrom {
@@ -1749,7 +1727,7 @@ mod tests {
17491727 } ;
17501728 let handle_result = handle ( & mut deps, mock_env ( "alice" , & [ ] ) , handle_msg) ;
17511729 let error = extract_error_msg ( handle_result) ;
1752- assert ! ( error. contains( "Insufficient allowance" ) ) ;
1730+ assert ! ( error. contains( "insufficient allowance" ) ) ;
17531731 }
17541732
17551733 #[ test]
@@ -1985,47 +1963,6 @@ mod tests {
19851963 assert_eq ! ( balances. account_amount( & canonical) , 4000 )
19861964 }
19871965
1988- #[ test]
1989- fn test_handle_balance ( ) {
1990- let ( init_result, mut deps) = init_helper ( vec ! [ InitialBalance {
1991- address: HumanAddr ( "butler" . to_string( ) ) ,
1992- amount: Uint128 ( 5000 ) ,
1993- } ] ) ;
1994- assert ! (
1995- init_result. is_ok( ) ,
1996- "Init failed: {}" ,
1997- init_result. err( ) . unwrap( )
1998- ) ;
1999-
2000- let handle_msg = HandleMsg :: Balance { padding : None } ;
2001- let handle_result = handle ( & mut deps, mock_env ( "butler" , & [ ] ) , handle_msg) ;
2002- assert ! (
2003- handle_result. is_ok( ) ,
2004- "handle() failed: {}" ,
2005- handle_result. err( ) . unwrap( )
2006- ) ;
2007-
2008- let balance: HandleAnswer = from_binary ( & handle_result. unwrap ( ) . data . unwrap ( ) ) . unwrap ( ) ;
2009- match balance {
2010- HandleAnswer :: Balance { amount } => assert_eq ! ( amount, Uint128 ( 5000 ) ) ,
2011- _ => panic ! ( "NOT GONNA HAPPEN" ) ,
2012- }
2013-
2014- let handle_msg = HandleMsg :: Redeem {
2015- amount : Uint128 ( 1000 ) ,
2016- padding : None ,
2017- } ;
2018- let _handle_result = handle ( & mut deps, mock_env ( "butler" , & [ ] ) , handle_msg) ;
2019-
2020- let handle_msg = HandleMsg :: Balance { padding : None } ;
2021- let handle_result = handle ( & mut deps, mock_env ( "butler" , & [ ] ) , handle_msg) ;
2022- let balance: HandleAnswer = from_binary ( & handle_result. unwrap ( ) . data . unwrap ( ) ) . unwrap ( ) ;
2023- match balance {
2024- HandleAnswer :: Balance { amount } => assert_eq ! ( amount, Uint128 ( 4000 ) ) ,
2025- _ => panic ! ( "NOT GONNA HAPPEN" ) ,
2026- }
2027- }
2028-
20291966 #[ test]
20301967 fn test_handle_deposit ( ) {
20311968 let ( init_result, mut deps) = init_helper ( vec ! [ InitialBalance {
@@ -2140,7 +2077,7 @@ mod tests {
21402077 ) ;
21412078
21422079 let pause_msg = HandleMsg :: SetContractStatus {
2143- level : ContractStatusLevel :: StopAllButWithdrawals ,
2080+ level : ContractStatusLevel :: StopAllButRedeems ,
21442081 padding : None ,
21452082 } ;
21462083 let handle_result = handle ( & mut deps, mock_env ( "not_admin" , & [ ] ) , pause_msg) ;
@@ -2193,7 +2130,7 @@ mod tests {
21932130 ) ;
21942131
21952132 let pause_msg = HandleMsg :: SetContractStatus {
2196- level : ContractStatusLevel :: StopAllButWithdrawals ,
2133+ level : ContractStatusLevel :: StopAllButRedeems ,
21972134 padding : None ,
21982135 } ;
21992136
0 commit comments