@@ -63,7 +63,7 @@ use cosmwasm_std::{
63
63
Uint128 ,
64
64
} ;
65
65
use cw20:: Cw20ExecuteMsg ;
66
- use cw_utils:: must_pay;
66
+ use cw_utils:: { must_pay, nonpayable } ;
67
67
use depolama:: StorageExt ;
68
68
69
69
use crate :: {
@@ -225,6 +225,7 @@ pub fn unbond(
225
225
info : MessageInfo ,
226
226
unbond_amount : u128 ,
227
227
) -> ContractResult < Response > {
228
+ nonpayable ( & info) ?;
228
229
ensure_not_stopped ( deps. as_ref ( ) ) ?;
229
230
230
231
let staker_hash = staker_hash ( & info. sender ) ;
@@ -312,7 +313,8 @@ pub fn unbond(
312
313
///
313
314
/// TODO: Withdraw unstaked tokens in this function
314
315
/// TODO: Incentivize this call
315
- pub fn submit_batch ( deps : DepsMut , env : Env ) -> ContractResult < Response > {
316
+ pub fn submit_batch ( deps : DepsMut , env : Env , info : MessageInfo ) -> ContractResult < Response > {
317
+ nonpayable ( & info) ?;
316
318
ensure_not_stopped ( deps. as_ref ( ) ) ?;
317
319
318
320
let config = deps. storage . read_item :: < ConfigStore > ( ) ?;
@@ -514,6 +516,7 @@ pub fn receive_rewards(deps: DepsMut, info: MessageInfo) -> ContractResult<Respo
514
516
}
515
517
516
518
pub fn rebase ( deps : DepsMut , info : MessageInfo ) -> ContractResult < Response > {
519
+ nonpayable ( & info) ?;
517
520
ensure_not_stopped ( deps. as_ref ( ) ) ?;
518
521
519
522
Ok ( Response :: new ( )
@@ -547,9 +550,8 @@ pub fn receive_unstaked_tokens(
547
550
expected_native_unstaked,
548
551
} = deps
549
552
. storage
550
- . maybe_read :: < SubmittedBatches > ( & batch_id) ?
553
+ . take :: < SubmittedBatches > ( & batch_id) ?
551
554
. ok_or ( ContractError :: BatchNotFound { batch_id } ) ?;
552
- deps. storage . delete :: < SubmittedBatches > ( & batch_id) ;
553
555
554
556
ensure ! (
555
557
receive_time <= env. block. time. seconds( ) ,
@@ -590,6 +592,7 @@ pub fn withdraw(
590
592
batch_id : BatchId ,
591
593
withdraw_to_address : Addr ,
592
594
) -> ContractResult < Response > {
595
+ nonpayable ( & info) ?;
593
596
ensure_not_stopped ( deps. as_ref ( ) ) ?;
594
597
595
598
let config = deps. storage . read_item :: < ConfigStore > ( ) ?;
@@ -652,6 +655,7 @@ pub fn transfer_ownership(
652
655
info : MessageInfo ,
653
656
new_owner : String ,
654
657
) -> ContractResult < Response > {
658
+ nonpayable ( & info) ?;
655
659
ensure_admin ( deps. as_ref ( ) , & info) ?;
656
660
657
661
deps. storage . write_item :: < PendingOwnerStore > ( & PendingOwner {
@@ -673,6 +677,7 @@ pub fn transfer_ownership(
673
677
674
678
// Revoke transfer ownership, callable by the owner
675
679
pub fn revoke_ownership_transfer ( deps : DepsMut , info : MessageInfo ) -> ContractResult < Response > {
680
+ nonpayable ( & info) ?;
676
681
ensure_admin ( deps. as_ref ( ) , & info) ?;
677
682
678
683
deps. storage . delete_item :: < PendingOwnerStore > ( ) ;
@@ -681,25 +686,27 @@ pub fn revoke_ownership_transfer(deps: DepsMut, info: MessageInfo) -> ContractRe
681
686
}
682
687
683
688
pub fn accept_ownership ( deps : DepsMut , env : Env , info : MessageInfo ) -> ContractResult < Response > {
689
+ nonpayable ( & info) ?;
690
+
684
691
let PendingOwner {
685
692
address : pending_owner,
686
693
owner_transfer_min_time_seconds,
687
694
} = deps
688
695
. storage
689
- . maybe_read_item :: < PendingOwnerStore > ( ) ?
696
+ . take_item :: < PendingOwnerStore > ( ) ?
690
697
. ok_or ( ContractError :: NoPendingOwner ) ?;
691
698
692
- ensure ! (
693
- owner_transfer_min_time_seconds <= env. block. time. seconds( ) ,
694
- ContractError :: OwnershipTransferNotReady {
695
- claimable_at_seconds: owner_transfer_min_time_seconds,
696
- now_seconds: env. block. time. seconds( )
697
- }
698
- ) ;
699
-
700
699
if pending_owner == info. sender . as_str ( ) {
701
- deps. storage . delete_item :: < PendingOwnerStore > ( ) ;
700
+ ensure ! (
701
+ owner_transfer_min_time_seconds <= env. block. time. seconds( ) ,
702
+ ContractError :: OwnershipTransferNotReady {
703
+ claimable_at_seconds: owner_transfer_min_time_seconds,
704
+ now_seconds: env. block. time. seconds( )
705
+ }
706
+ ) ;
707
+
702
708
deps. storage . write_item :: < Admin > ( & info. sender ) ;
709
+
703
710
Ok ( Response :: new ( )
704
711
. add_event ( Event :: new ( "accept_ownership" ) . add_attribute ( "new_owner" , info. sender ) ) )
705
712
} else {
@@ -715,6 +722,7 @@ pub fn update_config(
715
722
batch_period_seconds : Option < u64 > ,
716
723
unbonding_period_seconds : Option < u64 > ,
717
724
) -> ContractResult < Response > {
725
+ nonpayable ( & info) ?;
718
726
ensure_admin ( deps. as_ref ( ) , & info) ?;
719
727
720
728
let mut event = Event :: new ( "update_config" ) ;
@@ -773,6 +781,7 @@ pub fn update_config(
773
781
}
774
782
775
783
pub fn circuit_breaker ( deps : DepsMut , info : MessageInfo ) -> ContractResult < Response > {
784
+ nonpayable ( & info) ?;
776
785
ensure_not_stopped ( deps. as_ref ( ) ) ?;
777
786
778
787
// must either be admin or a monitor to halt the contract
@@ -798,6 +807,7 @@ pub fn resume_contract(
798
807
info : MessageInfo ,
799
808
new_accounting_state : AccountingState ,
800
809
) -> ContractResult < Response > {
810
+ nonpayable ( & info) ?;
801
811
ensure_admin ( deps. as_ref ( ) , & info) ?;
802
812
ensure_stopped ( deps. as_ref ( ) ) ?;
803
813
@@ -828,8 +838,8 @@ pub fn slash_batches(
828
838
info : MessageInfo ,
829
839
expected_amounts : Vec < BatchExpectedAmount > ,
830
840
) -> ContractResult < Response > {
841
+ nonpayable ( & info) ?;
831
842
ensure_admin ( deps. as_ref ( ) , & info) ?;
832
-
833
843
// ensure the contract is stopped before slashing the batches
834
844
ensure_stopped ( deps. as_ref ( ) ) ?;
835
845
0 commit comments